【问题标题】:How to export a CSV file from the MySQL command line如何从 MySQL 命令行导出 CSV 文件
【发布时间】: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';

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

【问题讨论】:

    标签: mysql sql select xampp into-outfile


    【解决方案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一样,所以测试看看你喜欢什么
    猜你喜欢
    • 1970-01-01
    • 2018-07-31
    • 2014-09-29
    • 2020-04-21
    • 2021-08-04
    • 2011-09-30
    • 2016-06-24
    • 1970-01-01
    • 2015-06-11
    相关资源
    最近更新 更多