【问题标题】:How to escape commas inside CSV values when importing table to MySQL?将表导入 MySQL 时如何在 CSV 值中转义逗号?
【发布时间】:2012-01-18 03:54:28
【问题描述】:

我正在尝试将 CSV 文件导入 MySQL 数据库表。 CSV 行如下所示:

"00602"," ","42042","15590","0","0","0","35","9","67","1978","20608","21434","3.1","54700","11384","31.3","30.4","32","18.382809","-67.186759","0","PR","Puerto Rico","U","","787","AGUADA","URB SAN CRISTOBAL","AGUADA","003","72","4","N","0060","","","10380","","Metro","Aguadilla-Isabela-San Sebastián PR","Aguadilla PR MSA","","","","N","0","0","0","0","","0","0","0","0","0","322569","0","","","5456","415","9577","V17136"," "," ","",""
"00602"," ","42042","15590","0","0","0","35","9","67","1978","20608","21434","3.1","54700","11384","31.3","30.4","32","18.382809","-67.186759","0","PR","Puerto Rico","U","","787","AGUADA","COMUNIDAD LAS FLORES","AGUADA","003","72","4","N","0060","","","10380","","Metro","Aguadilla-Isabela-San Sebastián PR","Aguadilla PR MSA","","","","N","0","0","0","0","","0","0","0","0","0","322569","0","","","5456","415","9577","V17136"," "," ","",""

etc...

如您所见,字段用双引号括起来并用逗号分隔。但是有些行的值内有逗号,如下所示(注意最后一个值):

"00501"," ","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","40.81518","-73.0455","25","NY","New York","N","","631","HOLTSVILLE","I R S SERVICE CENTER","SUFFOLK","103","36","5","Y","5602","5380","408","35620","35004","Metro","New York-Northern New Jersey-Long Island NY-NJ-PA","New York-Northern New Jersey-Long Island","Nassau-Suffolk, NY PMSA","Northeast","Middle Atlantic","N","7","0","0","0","B","0","0","0","0","0","18640775","2807500","","","0","1","1","V13916","U"," ","New York-Newark-Bridgeport, NY-NJ-CT-PA","Nassau-Suffolk, NY"

这就是我的导入语句的样子:

LOAD DATA INFILE '/file.csv'
REPLACE INTO TABLE zipcodes 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';

但它没有按预期工作。例如,插入的第一行有一列具有以下值:

Nassau-Suffolk, NY""00501

应该是:

Nassau-Suffolk, NY

并且00501 应该已作为第一列值插入到下一行。

如何调整我的 SQL 以正常工作?

【问题讨论】:

    标签: mysql database csv import


    【解决方案1】:

    MySQL Reference Manual,改用以下选项:

    LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
      FIELDS TERMINATED BY ',' ENCLOSED BY '"'
      LINES TERMINATED BY '\r\n'
    

    更新以匹配您的使用情况,但重要的是从 OPTIONALLY ENCLOSED BY 中删除 OPTIONALLY

    【讨论】:

    • 我们如何在存储过程中实现这一点,因为LOAD DATA 在 SP 中是不允许的?
    • 在 LINES TERMINATED BY '\r\n' 部分添加 \r 使它对我有用!谢谢!
    猜你喜欢
    • 2013-03-08
    • 1970-01-01
    • 2012-08-05
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多