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

mysql [Row 1 was truncated; it contained more data than there were input columns] ERROR

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

我的 table 在这里。

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);

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

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

url,month,title,"description": data 

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

所以从你的命令中删除 OPTIONALLY ENCLOSED BY '"',你应该已经准备好了。

顺便说一句,请确保您的 table 定义提到了 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';

此错误是由于 ' 可选地包含。我以前遇到过同样的问题,通过简单的调整就解决了。 只需在 '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);