【问题标题】:Importing CSV using LOAD DATA INFILE quote problem使用 LOAD DATA INFILE 引用问题导入 CSV
【发布时间】:2011-10-24 13:44:48
【问题描述】:

我正在尝试将从 excel 导出的这个 CSV 文件加载到我的数据库中,但无论我尝试什么,我似乎都无法正确获取格式。

这里是 SQL:

LOAD DATA INFILE 'path/file.csv'
INTO TABLE tbl_name 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
(column1, column2, column3); 

这很好用,但是当行尾(第 3 列)以引号结尾时,我遇到了麻烦。例如:

实际值:These are "quotes"

CSV 中的值:"These are ""quotes"""

发生的情况是,我将在数据库中获得该值的额外报价,以及任何其他行,直到它到达 CSV 中的另一个报价。关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: mysql excel csv


    【解决方案1】:

    嗯。我试图复制这个问题,但不能。我的数据与您的数据有何不同?你能提供样本数据来复制这个吗?这是我所做的:

    > cat /tmp/data.csv
    "aaaa","bbb ""ccc"" ddd",xxx
    xxx,yyy,"zzz ""ooo"""
    foo,bar,baz
    
    mysql> CREATE TABLE t2 (a varchar(20), b varchar(20), c varchar(20));
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> LOAD DATA INFILE '/tmp/data.csv' INTO TABLE t2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' (a, b, c);
    Query OK, 3 rows affected (0.00 sec)
    Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
    
    mysql> select * from t2;
    +------+---------------+-----------+
    | a    | b             | c         |
    +------+---------------+-----------+
    | aaaa | bbb "ccc" ddd | xxx       |
    | xxx  | yyy           | zzz "ooo" |
    | foo  | bar           | baz       |
    +------+---------------+-----------+
    3 rows in set (0.00 sec)
    

    我觉得还可以(?)

    另请注意,如果您使用的是 Windows 平台,则可能需要改用
    LINES TERMINATED BY '\r\n'

    【讨论】:

    • 非常感谢!问题是我需要改用LINES TERMINATED BY '\r\n'
    • 很好的答案,我尝试了上面的内容,但得到错误 ERROR 29 (HY000): File '/tmp/data.csv' not found (Errcode: 13),我也尝试过添加加载数据本地 infile 但收到错误 ERROR 1148 (42000): The used command is not allowed with this MySQL version 我正在使用 5.5.34 并且我的临时文件夹的权限是 drwxrwxrwt 还有什么我需要在这里检查让这个工作?
    • @ak85 当 MySQL 服务器与运行这些命令的客户端不在同一主机上时,通常会发生这种情况。意识到需要加载数据的是服务器,而不是客户端。因此,如果您要连接到远程服务器,那么除非您先将数据上传到服务器,否则您无法像这样导入数据。
    • 感谢您提供的信息,所以如果我从 information_schema.processlist \G 输入选择主机并获取主机:localhost 并且在 ubuntu 中我的文件是 /tmp/data.csv 所以我相信我会有相同的像你一样设置? cat /tmp/data.csv 像您的 eg 一样工作,但没有运气导入。我会继续调查
    • 我从 .txt 文件加载数据时遇到了问题。我确信\r\n 不是问题,但我最终放弃并尝试了它......,aaaa 并且它成功了。
    猜你喜欢
    • 1970-01-01
    • 2016-07-30
    • 2011-05-28
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    相关资源
    最近更新 更多