【问题标题】:MySQL "LOAD DATA INFILE" and Missing Double QuotesMySQL "LOAD DATA INFILE" 和缺少双引号
【发布时间】:2011-08-19 18:44:04
【问题描述】:

我正在尝试使用 LOAD DATA INFILE 技术将 CSV 加载到 MySQL 中。它工作正常,但我遇到了一些列使用双引号而有些不使用的问题。

例子:

something,123,something,"Bauer, Jack",123,something

会发生什么情况是引号内的逗号破坏了导入,所以我的数据最后都被抬高了。不知道如何让导入转义双引号内的逗号。

mysql --user=<USER> --password=<PASS> -e "LOAD DATA INFILE '<FILENAME>' INTO TABLE <TABLENAME> FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' (col1, col2, col3, ...)" <DATABASE>

【问题讨论】:

    标签: mysql csv


    【解决方案1】:

    您需要使用附加选项执行语句 LOAD DATA INFILE

    FIELDS OPTIONALLY ENCLOSED BY '"'
    

    这样整个语句就变成了

        LOAD DATA INFILE '<FILENAME>' INTO TABLE <TABLENAME>
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\r\n'
    (col1, col2, col3, ...)
    

    如需进一步阅读,请咨询优秀的MySQL Reference Manual e.g.适用于 MySQL 5.1 GA。

    【讨论】:

    • 对您的回答非常有帮助 +1
    • 有没有办法选择性地删除引号?
    • 非常有帮助,谢谢。我有FIELDS OPTIONALLY ENCLOSED BY '"'FIELDS 的重复导致了错误。 MySQL 是无情的。
    • 如果此选项似乎不起作用,请检查文件的编码。 MySQL 无法“加载使用 ucs2、utf16、utf16le 或 utf32 字符集的数据文件。”
    【解决方案2】:

    希望您现在已经弄清楚该怎么做,但如果您还没有,希望这会对您有所帮助。

    我在 Excel 2007 导出到自定义 CSV 文件时遇到了问题。我发现你可以在这里更改字段终止符:http://www.tek-tips.com/viewthread.cfm?qid=1635599&page=15

    我更喜欢使用管道 |字符,因为它不常见,并且在处理英寸“英尺”测量时更加灵活。

    【讨论】:

    • 不确定这与 Excel 有什么关系
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 2021-12-06
    • 2012-10-05
    • 2010-11-17
    • 1970-01-01
    • 2017-07-21
    相关资源
    最近更新 更多