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

70gysomp  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(437)

我的文本文件是这样的。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);

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

zqry0prt

zqry0prt1#

此错误是由于可选地用 ' . 我以前也遇到过同样的问题,通过简单的调整就解决了。只需在“fields”关键字之后立即使用封闭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);
ahy6op9u

ahy6op9u2#

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

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

相关问题