【问题标题】:mysql [Row 1 was truncated; it contained more data than there were input columns] ERRORmysql [第 1 行被截断;它包含的数据多于输入列] 错误
【发布时间】:2018-09-22 09:54:09
【问题描述】:

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

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

【问题讨论】:

  • @Madhur Bhaiya 哦...我如何从(链接、日期、标题、描述)开始? num 是 auto_increment 字段,所以我不想在我的文本中写它
  • 可能你需要 mediumtext .. 或更多
  • @scaisEdge 它与我在描述中使用“LONGTEXT”类型的结果相同..
  • @sangoh 你的 MySQL 版本是多少?
  • @MadhurBhaiya 我的版本是 8.0.12 谢谢。

标签: mysql csv import-from-csv utf8mb4


【解决方案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';

【讨论】:

  • “描述”:是我的错。我会删除这个。!!谢谢。我是没有特殊字符的规范化描述字段,所以 utfmb4 不需要我!
【解决方案2】:

这个错误是因为可选地被' 包围。我之前遇到过同样的问题,通过简单的调整得到了解决。 只需在“字段”关键字之后立即使用 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 2021-08-19
    相关资源
    最近更新 更多