MySQL的LOAD DATA INFILE AUTO_INCREMENT多发递增
。 我的文件sample.csvMySQL的LOAD DATA INFILE AUTO_INCREMENT多发递增
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);
,如果我excecute一次id的值将是8,但是当我重新执行同一个文件编号,从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
最后我得到一个答案
我们必须从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;
如果可能的话,从来不依赖于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
我必须要依赖于自动递增。我不能通过这样的id(id,named,phone,address); –
如果我使用ALTER TABLE表名AUTO_INCREMENT = 1;我必须每次执行此值(不止一次)以执行我的文件 –
我想这SQLyog的社区 - 的MySQL GUI v 11.27(64位),(三)2001年至2013年Webyog公司 –
当我excecute文件登时值最后一个ID将是8及其AUTO_INCREMENT不9.it显示为16,当我重新执行相同的文件的ID从16..why开始???? –