2014-02-08 68 views
0

我利用LOAD DATA INFILE導入大量CSV文件(〜30 GB)。有一些領域,沒有數據,因此我得到了以下錯誤代碼:LOAD DATA INFILE - mySQL錯誤代碼:1261.行1不包含所有列的數據

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) 

謝謝!

+2

你是說領域的_amount_可以每行有什麼不同? '因爲這確實是'LOAD DATA INFILE'無法爲你解決的問題。通常,_empty_字段不是問題,但_no_字段肯定是。 – Wrikken

+0

字段的數量是靜態的。最後一列偶爾只有數據。 –

+0

你能分享(1)一個完整的行,(2)一個不完整的行(3)你確切的'LOAD DATA'語句和(4)你的表定義?爲您進行調試變得相當容易;) – Wrikken

回答

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)