【发布时间】: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