2

有没有办法将列号不匹配的 CSV 导入 MySQL?

我有一个 MySQL“Employees”表,我们每个月用 CSV 文件更新一次。我在“员工”表中添加了两个与我们的需求相关的附加列。通过 MySQL Workbench 导入表数据,使用以下 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 忽略最后两列,让它们独自一人?

4

1 回答 1

3

您可以(并且应该!)显式命名要插入的列 using 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
于 2013-04-04T17:15:45.810 回答