如何从 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 文件的主要内容,如果未能解决你的问题,请参考以下文章