MySQL将MySQL表导出到CSV文件
Hrh
・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方法还可以节省大量时间。