【问题标题】:AUTO_INCREMENT Indexing Duplicate EntryAUTO_INCREMENT 索引重复条目
【发布时间】:2021-10-02 16:34:50
【问题描述】:

我正在尝试使用 LOAD DATA 命令将数据从 csv 文件加载到 MySQL 数据库中。

我的 csv 结构如下:

Index Name ...
0 blah
1 blahbla
...

但是当试图读取我的数据时使用

CREATE TABLE data (
    id INT NOT NULL AUTO_INCREMENT,
    KernelName VARCHAR(255) NOT NULL,
    ...,
    primary key (id)
);
USE myDatabase;
LOAD DATA INFILE '/filepath/myFile.csv'
INTO TABLE myTable
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

我收到错误ERROR 1062 (23000): Duplicate entry '1' for key 'myTable.PRIMARY'

我怀疑这是因为 AUTO_INCREMENT 正在创建一个 MySQL 表,其中 id 从 1 开始,而不是我正在阅读的 0。导致重复输入错误。

MySQL 新手,不在乎索引是从 0 还是 1 开始,只是不确定最简单的解决方法是什么。我应该跳过索引行吗?将 auto_increment 更改为从 0 开始?

【问题讨论】:

  • AUTO_INCREMENT 如果您正在加载的数据具有 id 列的明确值,则无关紧要。它使用文件中的任何内容。
  • 您收到错误是因为该表已经有id=1,并且您正在尝试从文件中加载另一个。
  • @Barmar 所以我什至不需要AUTO_INCREMENT,因为我已经在我的csv 中创建了一个有效的primary key 列?
  • 您将来创建的记录将需要它。
  • @fuzynutz22 您可以在加载数据后修改列以包含 AUTO_INCREMENT --> ALTER TABLE table MODIFY id INTEGER NOT NULL AUTO_INCREMENT;

标签: mysql sql csv import


【解决方案1】:

更新

我可以通过在初始 CREATE TABLE 命令中省略 AUTO_INCREMENT 来解决此问题。然后在导入数据后,我使用ALTER TABLE table MODIFY id INTEGER NOT NULL AUTO_INCREMENT; 恢复了自动增量功能。

感谢所有在 cmets 中提供帮助的人!

【讨论】:

    猜你喜欢
    • 2018-05-02
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    • 2011-10-01
    相关资源
    最近更新 更多