mysql从csv加载包含换行符的数据

时间:2017-09-13 02:41:08

标签: mysql csv linefeed

我使用此查询将一些csv数据转储到mysql中

LOAD DATA LOCAL INFILE 'path/LYRIC.csv' INTO TABLE LYRIC CHARACTER SET euckr FIELDS TERMINATED BY '|';

当我这样做时,我可以看到来自控制台的跟踪日志。

...
[2017-09-13 11:24:10] ' for column 'SONG_ID' at row 3
[2017-09-13 11:24:10] [01000][1261] Row 3 doesn't contain data for all columns
[2017-09-13 11:24:10] [01000][1261] Row 3 doesn't contain data for all columns
...

我认为csv将一些换行符作为列数据,因此它会破坏所有解析过程。

csv中的单个记录看起来像......

000001|2014-11-17 18:10:00|2014-11-17 18:10:00|If I were your September     
I''d whisper a sunset to fly through    
And if I were your September    


|0|dba|asass|2014-11-17 18:10:00||||2014-11-17 18:10:00

所以LOAD DATA将第1行作为记录推送,然后尝试第2行,依此类推,即使这是一个数据。

我该如何解决?我应该向客户请求不同类型的文件吗?

P.S。我对这个csv工作很新。

1 个答案:

答案 0 :(得分:1)

csv中的多行fieds应该用双引号括起来,如下所示:

000001|2014-11-17 18:10:00|2014-11-17 18:10:00|"If I were your September     
I''d whisper a sunset to fly through    
And if I were your September    


"|0|dba|asass|2014-11-17 18:10:00||||2014-11-17 18:10:00

该字段内的任何双引号都应该使用另一个双引号进行转义。

当然,解析器必须支持(并且可能被指示使用)多行字段。