MySQL将MySQL表导出到CSV文件

・7 分钟阅读

CSV是数据库的标准格式,用逗号将值与不同的行和列区分开,CSV文件的好处是它们是人类可读的。

这个详细的指南将向你展示如何将MySQL数据库导出到CSV文件。

前提条件

访问命令行或终端窗口有root或sudo权限的用户帐户有root权限的MySQL用户帐户预配置的phpMyAdmin帐户(可选)

使用phpMyAdmin将MySQL导出到CSV

phpMyAdmin工具提供了用于管理MySQL数据库的图形界面,可以使用它将它跟踪的数据库导出到CSV文件。

首先登录到phpMyAdmin,接下来,点击顶部的数据库按钮,在数据库列表中,单击要导出的数据库的链接,在这个例子中,我们选择了用户数据库,下一屏会显示一个数据库中的表列表,选中要导出的表的复选框,单击标题上的导出按钮,将导出方法设置为,使用格式下拉菜单选择CSV,然后单击go对话框提示指定保存CSV文件的位置,

使用命令行从MySQL导出到CSV

你可以通过选择表中的所有数据,并且指定保存位置来进行简洁的导出。

首先打开MySQL shell,然后切换到要导出的数据库。

输入以下语句:


SELECT * FROM myTable
INTO OUTFILE 'tmpmyExportFile.csv'
FIELDS ENCLOSED BY '"'
TERMINATED BY ';'
ESCAPED BY '"'
LINES TERMINATED BY 'rn';

myTable替换为数据库中的表的实际名称,你可以替换tmpmyExportFile.csv 使用其他文件名或位置,确保在末尾保留.csv文件名。


注:本示例使用Linux文件位置,如果在Windows工作,你可以使用c:/folder/file.csv 文件位置。


从MySQL导出的附加选项

指定要从表导出的单个数据集:


SELECT column1, column2, column3, column4
FROM myTable
WHERE column2 = 'value';

用要导出的列的实际名称替换column1 (其他的呢),确保使用FROM命令指定要从中导出的表,WHERE语句是可选的,它只允许导出包含特定值的行,用要导出的实际值替换value,例如:


SELECT order_date, order_number, order_status
FROM current_orders
WHERE order_status='pending';

注:WHERE子句可用于筛选结果。


导出和时间戳CSV文件

使用以下命令导出到CSV文件,并在创建文件时添加时间戳:


SET @TS = DATE_FORMAT(NOW(),'_%Y_%m_%d_%H_%i_%s');
SET @FOLDER = 'tmp';
SET @PREFIX = 'myTable';
SET @EXT = '.csv';
SET @CMD = CONCAT("SELECT * FROM myTable INTO OUTFILE '",@FOLDER,@PREFIX,@TS,@EXT,
"' FIELDS ENCLOSED BY '"'
 TERMINATED BY ';'
ESCAPED BY '"'"," 
LINES TERMINATED BY 'rn';");
PREPARE statement FROM @CMD;
EXECUTE statement;

通常,将myTable替换为要导出的表的实际名称。


注意:你注意到括号中的SELECT *FROM命令,在添加时间戳的函数中包装了命令。


用列标题导出

使用UNION语句将列标题添加到导出的文件:


(SELECT 'column1','column2','column3','column4')
UNION
(SELECT column1, column2, column3, column4
FROM myTable
INTO OUTFILE 'tmpmyExportFile.csv'
FIELDS ENCLOSED BY '"' TERMINATED BY ';' ESCAPED BY '"'
LINES TERMINATED BY 'rn')

处理空值

如果数据库中有null (空)值,则此进程将它们导出为字母N,可以用另一个更有意义的文本字符串替换NULL值:


SELECT column1, column2, IFNULL(column3, 'N/A')
FROM myTable INTO OUTFILE 'tmpmyExportFile.csv'
FIELDS ENCLOSED BY '"'
TERMINATED BY ';'
ESCAPED BY '"' LINES
TERMINATED BY 'rn');

在这种情况下,IFNULL命令在column3中查找空值,当它找到它们时,它用文本字符串N/A替换它们。

使用MySQL dump导出MySQL到CSV

可以使用MySQL dump应用程序将MySQL数据库导出到CSV文件,在命令提示符中输入以下内容:

mysqldump --tab=/var/lib/mysql-files/ --fields-enclosed-by='"' --fields-terminated-by=',' --lines-terminated-by='n' myTable

此命令创建数据库myTable的副本,/var/lib/mysql-files


注:你的用户帐户必须具有访问CSV文件保存在,你可以保存到一个不同的路径,但是它必须是路径MySQL有完全访问。


使用MySQL引擎导出CSV

在某些情况下,你可以使用MySQL中的CSV引擎来更改表,如果表有索引,或者表使用auto_increment,则此方法无效,使用以下命令:

ALTER TABLE myTable ENGINE=CSV;

此语句将数据库的格式更改为CSV,然后你可以将CSV文件复制到另一个系统。

结束语

现在有四种方法可以将MySQL数据库导出到CSV文件,如果你可以访问phpMyAdmin,它是最容易使用的工具。

如果使用的是命令行接口,则SELECT INTO命令是最可靠的方法,在某些配置中,CSV引擎或mysql dump方法还可以节省大量时间。

Hrh profile image