【问题标题】:Row does not contain data for all columns行不包含所有列的数据
【发布时间】:2014-11-30 23:22:15
【问题描述】:

我正在尝试导入包含以下内容的文本文件:

http://pastebin.com/qhzrq3M7

使用命令进入我的数据库

加载数据本地 infile 'C:/Users/Gary/Desktop/XML/jobs.txt' INTO 表作业字段以 '\t' 终止;

但我不断收到错误第 1-13 行不包含所有列的数据

【问题讨论】:

  • 列(未填充)是否具有 NOT NULL 值?所有列都填满了吗?
  • 未填充的列没有非空值

标签: mysql


【解决方案1】:

如果您使用的是 Windows,请确保使用 mariadb 文档中解释的 LINES TERMINATED BY \r\n

【讨论】:

    【解决方案2】:

    确保每行的最后一个字段以 \t 结尾。或者,使用 LINES TERMINATED BY

    LOAD DATA LOCAL INFILE 'C:/Users/Gary/Desktop/XML/jobs.txt' INTO TABLE jobs COLUMNS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r';
    

    \r是回车符,类似于换行符(即\n

    【讨论】:

    • 我一直在寻找这个答案,似乎没有人提到lines terminated by
    【解决方案3】:

    我遇到了同样的问题。我是如何解决这个问题的:

    1. 尝试使用 Notepad++(文本编辑器)打开 CSV 文件
    2. 我看到文件末尾有一个空行,我已将其删除。

    -- 好啊,它解决了我的问题。

    以下网址也可以帮助您解决问题。 http://www.thoughtspot.com/blog/5-magic-fixes-most-common-csv-file-problems

    【讨论】:

      【解决方案4】:

      听起来像加载数据本地 infile 期望看到每列的值。

      您可以手动编辑文件(删除那些行——可能是空行),或者您可以创建一个临时表,将行插入到单个列中,然后编写一个 mysql 命令来拆分选项卡上的行并将值插入到目标表中

      【讨论】:

        【解决方案5】:

        确保任何字段的末尾都没有“\”。在被视为文本的 csv 中,这看起来像“\”,这显然是一个禁忌,因为该逗号将被忽略,因此您将没有足够的列。

        (这主要适用于每个字段周围没有引号之类的字段封装。)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-05
          • 2013-11-09
          • 2022-08-10
          • 1970-01-01
          • 1970-01-01
          • 2023-01-20
          相关资源
          最近更新 更多