如何将 csv 文件导入 mysql table 并自动递增

How to import a csv file into a mysql table and auto increment

我正在尝试使用以下命令将 csv 文件导入 mysql:

mysqlimport --columns=name,amount,desc --ignore-lines=1 --fields-terminated-by=, --verbose --local -u muser -p mydb file.csv

该文件包含字段但没有主键。它看起来像这样:

name, amount, desc

我的 mysql table 看起来像这样:

CREATE TABLE `organization` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(128) DEFAULT NULL,
  `amount` varchar(128) DEFAULT NULL,
  `desc` varchar(128) DEFAULT NULL,

如何使用 mysqlimport 导入 csv 文件并生成自动递增的 ID?

当我 运行 执行此操作时,出现以下错误:

mysqlimport: Error: 1467, Failed to read auto-increment value from storage engine, when using table: organization

使用--columns parameter指定字段的映射。列名的顺序表示如何将数据文件列与 table 列匹配。

mysqlimport --columns=name,amount,desc...

使用前导空白字段扩展您的 csv:

id,name,amount,desc
,john,10,xz
,paul,20,ac

对于那些使用 phpmyadmin UI 导入 and/or 的用户,您的 table 可能有非常多的列,您不想通过冗长乏味的 sql 语句执行以下操作;

  1. 使用任何电子表格编辑器(如 Microsoft excel)在 ID 列所在的位置添加一个空白列。

  2. 如果您收到“不正确的整数值:'' for column 'id' at row 1”错误,请填写您用 0 创建的空白 ID,它们将在插入时自动递增.

注意当使用电子表格编辑器编辑 csv 文件时,只需交叉检查所有列(尤其是日期或货币列)的格式是否为编辑器的默认格式,这可能与您的原始格式不同。