多次执行同一文件时,自动增量值将出错。 我的文件是sample.csv
name,phone,address
a,9401003026,dsa
b,9658746542,fsa
c,9865742310,hgfh
d,9865869537,hf
e,9401003026,hf
s,9658746542,hf
h,9865742310,hf
j,9865869537,hf
我的查询是
LOAD DATA LOCAL INFILE '/home/anson/AnsonBackup/python/newtest/sample.csv'
INTO TABLE `sample` COLUMNS TERMINATED BY ','
LINES TERMINATED BY '\n' IGNORE 1 LINES
(named,phone,address);
如果我超过一次id的值将是8但是当我重新执行同一个文件时,id从16开始。为什么????
我的桌子是
CREATE TABLE `sample` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`named` VARCHAR(30) DEFAULT NULL,
`phone` VARCHAR(30) DEFAULT NULL,
`address` VARCHAR(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=latin1
答案 0 :(得分:0)
如果可能,永远不要依赖auto_increment列来获得某些值,因为您描述的问题可能会发生。每次插入表格时,id都会增加。
如果需要,您也可以在csv中包含id字段,因此您的导入句子将是:
LOAD DATA LOCAL INFILE '/home/anson/AnsonBackup/python/newtest/sample.csv'
INTO TABLE `sample` COLUMNS TERMINATED BY ','
LINES TERMINATED BY '\n' IGNORE 1 LINES
(id, named, phone, address);
或者,如果你不能这样做,你必须重置计数器,如下所示:
ALTER TABLE tablename AUTO_INCREMENT = 1;
使用正确的auto_increment而不是1.有关详细信息,请访问:related answer
答案 1 :(得分:0)
最后我得到了答案
我们必须将其ENGINE从INNODB更改为MyISAM
CREATE TABLE `sample` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`named` VARCHAR(30) DEFAULT NULL,
`phone` VARCHAR(30) DEFAULT NULL,
`address` VARCHAR(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;