Do you want to export tables from your MySQL database to a CSV format? You have landed at just the right post. We give you an easy, stepwise guide for 5 different methods to do just that.
MySQL is the most popular open-source relational database. It stores data in the form of tables.
It is offered under two different editions:
- The open-source MySQL community server
- The proprietary Enterprise server
However, the raw format of MySQL tables is supported by a limited number of applications. Therefore, it is often beneficial to convert MySQL data into CSV format.
In this article we will look into the following:
- Why CSV?
- Methods for MySQL Export to CSV
- Basic knowledge of MySQL
- Using MySQL shell
- Using a terminal/command line
- Write permission for the intended output file
- Read permission for the input MySQL table
- Pre-configured phpMyAdmin account (optional)
CSV is a standard format with a number of benefits.
Features of CSV are as follows:
- CSV stands for comma-separated value and is a widely accepted format.
- CSV files have the added advantage of being human-readable.
- Being plain-text, they can easily be imported into any application.
- Better at organizing large data.
A Convenient Alternative to Exporting Your Data – Hevo Data
Hevo Data, a No-code Data Pipeline, provides you with a platform to export data from your MySQL database to any data warehouse. It helps you move and transform data in real-time and provides state-of-the-art infrastructure. Some of the salient features of Hevo include:
- Fully Automated: The Hevo platform can be set up in just a few minutes and requires minimal maintenance.
- Real-time Data Transfer: Hevo provides real-time data migration, so you can have analysis-ready data always.
- 100% Complete & Accurate Data Transfer: Hevo’s robust infrastructure ensures reliable data transfer with zero data loss.
- Scalable Infrastructure: Hevo has in-built integrations for 100’s of sources that can help you scale your data infrastructure as required.
- Live Support: The Hevo team is available round the clock to extend exceptional support to its customers through chat, email, and support call.
- Schema Management: Hevo takes away the tedious task of schema management & automatically detects schema of incoming data and maps it to the destination schema.
Get started with Hevo by signing up for a free 14-day trial!
Methods of Exporting MySQL Table to CSV
You will learn the following 5 methods to export your tables from MySQL to CSV:
1. Using Command Line
It is extremely easy to use the command line to export a MySQL table to CSV. You do not need to download any additional software.
You will also learn how to export to CSV using the command line under the following conditions:
- Exporting selected columns of a table
- Exporting tables with a timestamp
- Export with Column Headers
- Handling NULL Values
To export to CSV, do as follows:
- Navigate to the database which has the table you want to export using the following command:
Here, dbName must be replaced with the name of your database.
- If your MySQL server has been started with –secure-file-priv option, you must use:
SHOW VARIABLES LIKE "secure_file_priv"
This command will show you the directory that has been configured. You can only store your output file in this directory.
- Select all the data of the table and specify the location of the output file.
TABLE tableName INTO OUTFILE 'path/outputFile.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '' LINES TERMINATED BY 'n';
- Make sure to use the .csv extension for your output file.
- The ORDER clause can be used to arrange the data according to a particular attribute.
- The LIMIT clause is used to restrict the number of rows to be copied into the output file.
a. Exporting Selected Columns of a Table
- To do this you can use the SELECT statement to specify the columns you want to export.
- You may additionally use the WHERE clause to use specific conditions and filter the results.
SELECT columnName, …. FROM tableName WHERE columnName = 'value';
b. Exporting Tables with a Timestamp
You may want to add a timestamp to the exported file, to do that you must use a MySQL prepared statement.
Use the following command to export to a CSV file, and add a timestamp for the time the file was created:
SET @TS = DATE_FORMAT(NOW(),'_%Y_%m_%d_%H_%i_%s'); SET @FOLDER = '/var/lib/sql-files/'; SET @PREFIX = 'employees'; SET @EXT = '.csv'; SET @CMD = CONCAT("SELECT * FROM tableName INTO OUTFILE '",@FOLDER,@PREFIX,@TS,@EXT, "' FIELDS ENCLOSED BY '" ' TERMINATED BY ',' ESCAPED BY '"'", "LINES TERMINATED BY 'n';"); PREPARE statement FROM @CMD; EXECUTE statement;
c. Export with Column Headers
It is often convenient to add column headers to the output file to better identify and analyze the data. To do this, you must use the UNION statement.
Use the following command to add column headers:
(SELECT 'columnHeading', ...) UNION (SELECT column, ... FROM tableName INTO OUTFILE 'path-to-file/outputFile.csv’' FIELDS ENCLOSED BY '"' TERMINATED BY ',' ESCAPED BY '"' LINES TERMINATED BY 'n')
d. Handling NULL Values
If your results contain NULL values, they will appear as ‘N’ in the exported file instead of NULL. This may lead to confusion and thus, you may want to replace this ‘N’ string with a string like NA (not applicable) that makes more sense.
Use the following command to do it:
SELECT column, column, IFNULL(column, 'NA') FROM tableName INTO OUTFILE 'path-to-file/outputFile.csv' FIELDS ENCLOSED BY '"' TERMINATED BY ',' ESCAPED BY '"' LINES TERMINATED BY 'n');
2. Using mysqldump
mysqldump is a utility tool provided by MySQL server that enables users to export tables, databases and entire servers. Moreover, it is also used for backup and recovery.
Here, we will discuss how mysqldump can be used to export a MySQL table to CSV.
- Use the following command in a command prompt/terminal:
mysqldump -u [username] -p -t -T/path/to/directory [database] [tableName] --fields-terminated-by=,
- The given command will create a copy of the table specified by tableName at the location you define using the -T option.
- The name of the file will be the same as that of the table and will have a .txt extension.
3. Using MySQL Workbench
MySQL Workbench provides an Import/Export Wizard which allows you to export our database/ tables to specified format using a graphical user interface. The wizard supports JSON and CSV formats.
To download MySQL Workbench, click here.
You can follow the given steps to export your MySQL table using MySQL Workbench:
- Use the left bar “schemas” tab to locate the table you want to export.
In this example, we will be exporting the employees table in the classicmodels database.
- Right-click on the table and select “Table Data Export Wizard” to get the following screen.
- Select the columns you want to export.
- Click on Next.
- Browse to the directory where you want to save the output file.
- Choose the CSV format option.
- Click on Next.
- Your data will start exporting.
- You can track the process through the logs.
4. Using phpMyAdmin
phpMyAdmin provides a graphical user interface to export your MySQL table in different formats. Apart from CSV it supports other formats such as XML, JSON, YAML and many others.
To download phpMyAdmin, click here.
To use phpMyAdmin to export data, follow these steps:
- Log in to phpMyAdmin using a user that has required permissions.
- Navigate to the database which contains the source table as shown.
- Choose the table from the database.
- Click on Export in the top bar.
- Choose the CSV format from the format dropdown menu.
- Click on Go.
- Select save file option when prompted.
5. Using CSV Engine
The CSV storage engine stores data in text files using comma-separated values format and is always compiled into the MySQL server.
It is important to note that this method can only be used if the table does not have an index or an AUTO_INCREMENT constraint.
ALTER TABLE tableName ENGINE=CSV;
This command changes the format of the database to CSV. It can then directly be copied to another system easily.
You now have 5 methods to export your MySQL table to CSV in your arsenal. If you are comfortable with writing queries using the command-line or mysqldump utility tool will prove to be the simplest way. However, if you are not confident with your querying skills, MySQL Workbench and phpMyAdmin will be your best bet.
Are you looking for an alternative to exporting data manually? Do you want to automate the process of moving data from MySQL to your data warehouse? Use Hevo, a No-code Data Pipeline that does this for you. Start your 14-day free trial now.
Have you used any of these methods? Have any further queries? Reach out to us in the comments section below.