mysql [行1被截断;它包含的数据多于输入列的数据]错误

时间:2018-09-22 09:54:09

标签: mysql csv import-from-csv utf8mb4

我的文本文件是这样的。 https://drive.google.com/open?id=1faW_OkO7_VoEQL_gndFIOrJv2e4Ycuzo

我的桌子在这里。

CREATE TABLE news(
    num INT auto_increment primary key,
    link VARCHAR(150),
    date INT,
    title VARCHAR(150) unique,
    description TEXT 
);

我尝试

LOAD DATA INFILE 'test.txt'
    INTO TABLE news
    CHARACTER SET utf8mb4
    FIELDS
    TERMINATED BY ', ' OPTIONALLY ENCLOSED BY '"' 
    LINES
    TERMINATED BY '\n' (link, date, title, description);

但不起作用,我的错误是什么?

2 个答案:

答案 0 :(得分:1)

您的输入文件有四列,如下所示:

url,month,title,"description": data 

CSV导入将在每个描述列的开头包含单词"description":

因此,从命令中删除OPTIONALLY ENCLOSED BY '"',您应该已经准备就绪。

顺便说一句,请确保您的表定义中提到了utf8mb4字符集(否则您输入中的某些字符可能无法正确表示)。为了获得最佳结果,请不要依赖服务器默认值来选择字符集。

CREATE TABLE news(
            num INT auto_increment primary key,
           link VARCHAR(150),
           date INT,
           title VARCHAR(150) unique,
    description TEXT 
)
COLLATE 'utfmb4_general_ci';

答案 1 :(得分:0)

此错误是由于'所引起的。我之前也遇到过同样的问题,并且通过简单的调整就解决了。 只需在'Fields'关键字之后立即使用Enclosed by子句。
因此,您的代码将类似于:

LOAD DATA INFILE 'test.txt'
INTO TABLE news
CHARACTER SET utf8mb4
FIELDS OPTIONALLY ENCLOSED BY '"' 
TERMINATED BY ', ' 
LINES
TERMINATED BY '\n' (link, date, title, description);