是否有办法将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忽略最后两列,让它们单独存在?
您可以(而且应该!)使用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