【发布时间】: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;