如何从 MySQL 命令行导出 CSV 文件

Posted

技术标签:

【中文标题】如何从 MySQL 命令行导出 CSV 文件【英文标题】:How to export a CSV file from the MySQL command line 【发布时间】:2020-06-01 19:38:06 【问题描述】:

我有一个 mysql 数据库,其中包含一个表,该表用作操作和查询数据集的临时存储点,并定期删除并替换为新数据。我想做的是从 MySQL 命令行导出数据以用于其他目的。我在 Windows 10 上使用带有 phpMyAdmin 的 XAMPP Apache 服务器包。

我遇到的问题是我使用的 INTO OUTFILE 语法返回与“\n”相关的错误。下面是一个语法示例:

SELECT *  
FROM tablename  
WHERE work_complete = 'Yes' 
INTO OUTFILE 'C:\file path for the file to be exported to\file_name.csv'   
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY "''"   
ESCAPED BY '\'  
LINES TERMINATED BY '\n'; 

我花了一些时间研究这个没有任何运气,我什至尝试过使用

LINES TERMINATED BY '\r\n'

但错误依旧

ERROR: Unknown command '\''.
   ->     LINES TERMINATED BY '\r\n';

如果有人能提供任何提示,将不胜感激。

【问题讨论】:

【参考方案1】:

问题不在LINES TERMINATED BY,而在ESCAPED BY

这个:

ESCAPED BY '\'  

语法无效,因为反斜杠被解释为以下引号的转义字符。一个体面的文本编辑器应该能让你看到这一点。

您需要转义反斜杠,如下所示:

ESCAPED BY '\\'  

或者,您也可以使用'\b'

ESCAPED BY '\b'  

另一个问题是OPTIONALLY ENCLOSED 只接受一个字符,而你给它两个单引号。

在您的查询中:

SELECT *  FROM tablename WHERE work_complete = 'Yes' 
INTO OUTFILE 'C:\file path for the file to be exported to\file_name.csv'   
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY "'" ESCAPED BY '\\'  
LINES TERMINATED BY '\n'

【讨论】:

我已经根据建议修改了 ESCAPED BY,现在我看到“错误 1083 (42000):字段分隔符参数不是预期的;查看手册 MariaDB [db]>”跨度> @jasw:我明白了。您需要将OPTIONALLY ENCLOSED BY "''" 更改为OPTIONALLY ENCLOSED BY "'"。此选项接受单个字符,而您传递两个字符。我更新了我的答案。【参考方案2】:

使用这个

SELECT *  
FROM tablename  
#WHERE work_complete = 'Yes' 
INTO OUTFILE 'C:\file path for the file to be exported to\file_name.csv'   
FIELDS ENCLOSED BY '"' 
TERMINATED BY ';' 
ESCAPED BY '"' 
LINES TERMINATED BY '\r\n';

我像你一样使用了一些其他语法,并删除了 mysql 在那个地方不喜欢的 OPTIONALLY

【讨论】:

现在它返回一个错误,通知我文件已经存在(它不存在)我已经更改了文件名,但仍然返回相同的错误“错误 1086(HY000):文件'C:文件路径export csv filescompleted_tasks.csv'已经存在" MySQL 是否有存储导出的首选文件路径/目标?还是很乐意存放在指定的地方? 如果启用了安全文件,是的,它是 bin 文件夹,但您可以将 [client] loose-local-infile = 1 [mysqld] secure-file-priv = "" 添加到您的服务器,如果它是你的开发者系统 出于兴趣,这是使用 MySQL 的最佳方式:将 MySQL shell 8.0.19 与 js 和 python 连接器与 MySQL 工作台结合使用,或者将 XAMPP 与 phpMyAdmin 一起使用? 没有最佳方式,我经常使用workbench,有时shell用于耗时太长的事情,phpmyadmin和Workbench一样,所以测试看看你喜欢什么

以上是关于如何从 MySQL 命令行导出 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章

mysql命令行导出数据

mysql命令行导入和导出数据

如何将MySql Workbench中的表格数据导出为csv?

MySql命令行的5、导出和导入数据

如何从命令行合并两个 CSV 文件?

MySQL导出csv文件并分割成多列