有没有办法将CSV导入到列号不匹配的MySQL中?
我有一个MySQL“员工”表,我们每月用CSV文件更新一次。我在“Employees”表中添加了两个与我们需求相关的附加列。使用以下SQL语句通过MySQL Workbench导入表数据:
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忽略最后两列,只留下它们?
答案 0 :(得分:3)
您可以(并且应该!)使用LOAD DATA INFILE
明确命名要插入的列,就像常规INSERT
一样。您还可以选择为LOAD DATA INFILE
语句中添加的两个新列设置默认值。
像这样的东西。只需在parens之间以正确的顺序填写实际的列名,如果不想要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