首页 > 解决方案 > mysql LOAD DATA LOCAL INFILE 合并行

问题描述

我正在使用 LOAD DATA LOCAL INFILE 语法将服务器上的文件中的 csv 文件加载到数据库中。它有效,问题是,有些行合并在一起,就像没有任何新的行分隔符一样。但是当我检查问题所在的特定行时,我看到文件中有分隔符。可能是什么问题呢?

LOAD DATA LOCAL INFILE 'words.tsv' 
INTO TABLE `words` 
CHARACTER SET `utf8mb4` 
FIELDS TERMINATED BY '\t'  ENCLOSED BY '"'  
LINES TERMINATED BY '\n' 
(id, lang, text);

数据类似于 ID、语言、文本,由 \t 分隔(因为文件名为 tsv)。

如果我只尝试 \r 作为换行符,它只导入 1 行,如果 \r\n 也只有 1 行。如果 \n 多行但有些错误。文件是 utf8,我使用:

SET NAMES utfmb4;

在运行导入以支持表情符号之前。我不知道它是否相关。

123 eng Hello world
124 eng Bla bla bla

它导入一些行,例如:

id: 123
text: eng Hello world 124 eng Bla bla bla

标签: mysql

解决方案


所以我看到问题是包含'"'的特定行和命令包含的部分

ENCLOSED BY '"' 

但实际上这些行没有用 " 括起来,所以我不得不从命令中删除这部分并且它可以工作。


推荐阅读