mysql 从包含换行符的 csv 加载数据
mysql load data from csv which contains line feed
我正在使用此查询将一些 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 工作很陌生。
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
并且该字段中的任何双引号都应该用另一个双引号转义。
当然,解析器必须支持(并且可能被指示使用)多行字段。
我正在使用此查询将一些 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 工作很陌生。
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
并且该字段中的任何双引号都应该用另一个双引号转义。
当然,解析器必须支持(并且可能被指示使用)多行字段。