【问题标题】:Can I LOAD DATA with ugly data that has escape characters and quotes?我可以用带有转义字符和引号的丑陋数据加载数据吗?
【发布时间】:2025-12-26 18:45:11
【问题描述】:

我有两条记录,例如这样

11,avec myName à EX,Ex,0,2021-06-25
22,"andone \"ttt\"",Ex,0,2021-06-25

我正在尝试将其加载到带有加载数据的 MySQL 表中,但每次尝试时,引号都会被截断,或者后面的空格不显示。

我需要知道这是否可能。这两条记录可以放入一个表中并且看起来与 CSV 文件中的完全一样吗?

我正在使用 MySQL 并尝试

LOAD DATA LOCAL INFILE  'example.csv' INTO TABLE example;

【问题讨论】:

    标签: mysql sql csv


    【解决方案1】:

    使用ENCLOSED BYESCAPED BY 选项。

    LOAD DATA LOCAL INFILE 'example.csv' 
    INTO TABLE example
    FIELDS OPTIONALLY ENCLOSED BY '"'
        ESCAPED BY '\\';
    

    【讨论】:

    • 感谢您似乎已将所有内容都加载到表格的第一列中,我需要以某种方式映射吗?
    • @TWF 添加FIELDS TERMINATED BY ','
    【解决方案2】:
    LOAD DATA LOCAL INFILE 'example.csv' INTO TABLE example
    FIELDS TERMINATED BY ',' 
    OPTIONALLY  ENCLOSED BY '"'
    ESCAPED BY '\\' 
    LINES TERMINATED BY '\r\n'
    IGNORE 1 LINES
    (col1, col2, col3.col4,col5);
    

    在 mysql 8 中,这会给你一个错误,请阅读

    https://dev.mysql.com/doc/refman/8.0/en/load-data.html#load-data-file-location

    windws 使用LINES TERMINATED BY '\r\n'

    如果文件来自 linux 系统,请使用 `LINES TERMINATED BY '\n'

    如果不查看文件很难判断哪些参数会有所帮助,因此您应该尝试一些变体。

    在这种情况下,具有 hexfile 功能的编辑器也有助于分析结构

    【讨论】:

    • 您无法从示例中看出这些行是由\n 还是\r\n 终止的。
    • windows 中的行由 CR LF carriqage 返回换行符结束,Linux 仅使用 \n,您可以在编辑器中使用十六进制值检查每行末尾的内容