2013-04-04 28 views
2

有沒有辦法將CSV導入列號不匹配的MySQL?將CSV導入到比目標表更少的列的MySQL

我有一個MySQL的「Employees」表,我們每月更新一次CSV文件。我在「員工」表中添加了兩列與我們的需求相關的附加列。導入表格數據,通過MySQL工作臺,用下面的SQL語句:

LOAD DATA LOCAL INFILE 'EmployeeDump-March.csv' REPLACE INTO TABLE employees 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 

我收到以下錯誤,這是絕對正確的...列號不匹配:

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

兩個額外的字段具有默認值。

有沒有辦法抑制這個錯誤,並讓MySQL忽略最後兩列,讓它們獨處?

回答

3

您可以(也應該!)使用LOAD DATA INFILE明確指定要插入的列,就像常規INSERT一樣。您還可以選擇設置作爲LOAD DATA INFILE語句的一部分添加的兩個新列的默認值。

就是這樣。只需填寫在括號之間的正確順序的實際列名稱,併爲新列的實際違約和列名,如果你不想NULL:

LOAD DATA LOCAL INFILE 'EmployeeDump-March.csv' REPLACE INTO TABLE employees 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
(old_column1, old_column2, ...) 
set new_column1 = NULL, 
    new_column2 = NULL 
+0

完成,並且完成了!謝謝! – 2013-04-04 17:59:34