2016-11-17 34 views
1

。 我的文件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 
+0

我想這SQLyog的社區 - 的MySQL GUI v 11.27(64位),(三)2001年至2013年Webyog公司 –

+0

當我excecute文件登時值最後一個ID將是8及其AUTO_INCREMENT不9.it顯示爲16,當我重新執行相同的文件的ID從16..why開始???? –

回答

0

最後我得到一個答案

我們必須從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; 
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

+0

我必須要依賴於自動遞增。我不能通過這樣的id(id,named,phone,address); –

+0

如果我使用ALTER TABLE表名AUTO_INCREMENT = 1;我必須每次執行此值(不止一次)以執行我的文件 –