2013-04-04 56 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