【问题标题】:LOAD DATA INFILE - mySQL Error Code: 1261. Row 1 doesn't contain data for all columnsLOAD DATA INFILE - mySQL 错误代码:1261。第 1 行不包含所有列的数据
【发布时间】:2014-02-08 20:32:50
【问题描述】:

我正在利用 LOAD DATA INFILE 导入一个大型 CSV 文件(~30 GB)。有些字段没有数据,因此我收到以下错误代码:

Error Code: 1261. Row 1 doesn't contain data for all columns

由于 CSV 文件的大小,我不想先尝试编辑它。我曾尝试使用 DEFAULT NULL 为具有空白字段的列重新创建表,但是我仍然遇到相同的错误。感谢您对解决此问题的任何帮助。

这里是创建表

#c.execute("CREATE TABLE dns_part2_b (date VARCHAR(15), time VARCHAR(25), ip1 VARCHAR(20), ip2 VARCHAR(20), dns VARCHAR(150), arec VARCHAR(10), wsa VARCHAR(10) DEFAULT NULL)")

还有 LOAD DATA 命令

LOAD DATA INFILE '/Volumes/data/mycsv.csv' INTO TABLE dns_part2_b FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES;

这是一个不完整记录的例子:

date,time,ip1,ip2,dns,arec,wsa
2013-07-01,00:00:14.301038+00:00,1.1.1.1,2.2.2.2,domain.com,A

一个完整的

date,time,ip1,ip2,dns,arec,wsa
2013-07-01,00:00:12.335246+00:00,2.2.2.2,1.1.1.1,WPAD,NB,(WS)

谢谢!

【问题讨论】:

  • 您是说数量的字段可以每行有所不同吗?因为那确实是LOAD DATA INFILE 无法为您解决的问题。通常,字段不是问题,但no字段肯定是。
  • 字段的数量是静态的。最后一列只是偶尔有数据。
  • 您能否分享(1)完整的行,(2)不完整的行(3)您的确切LOAD DATA 语句和(4)您的表定义?让你更容易调试它;)

标签: mysql


【解决方案1】:

每行必须有正确数量的逗号。

date,time,ip1,ip2,dns,arec,wsa
2013-07-01,00:00:14.301038+00:00,1.1.1.1,2.2.2.2,domain.com,A,

如果缺少 dns 字段,它会是(例如)

2013-07-01,00:00:12.335246+00:00,2.2.2.2,1.1.1.1,,NB,(WS)

【讨论】:

    猜你喜欢
    • 2014-03-05
    • 1970-01-01
    • 2022-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多