2009-11-01 9 views
11

"LOAD DATA LOCAL INFILE" dosya adı 'INTO TABLE' tablename '"öğesini kullanarak bir veri dosyasını mysql tablosuna yüklemeye çalışıyordum.MySQL LOAD DATA INFILE - Birincil anahtar olmayan bir dosya yükleniyor

Sorun, kaynak veri dosyasının her alanın verilerini içermesidir, ancak birincil anahtar eksiktir ('id' sütunu). Kaynak veri dosyasının her satırına benzersiz bir kimlik eklemem gerekiyor, aksi takdirde içe aktarma işlemi gerçekleşmeyecek.

Kaynak dosyada birincil anahtarı yok saymak veya içe aktarma sırasında otomatik olarak artırmak için bir seçenek var mı?

Zaten bir otomatik artışlı birincil anahtara ayarlanmış.

mysql> desc tablename; 
+--------------------+--------------+------+-----+---------+----------------+ 
| Field    | Type   | Null | Key | Default | Extra   | 
+--------------------+--------------+------+-----+---------+----------------+ 
| id     | int(11)  | NO | PRI | NULL | auto_increment | 
... 

cevap

13

Neden otomatik arttırma birincil anahtarı olan bir tabloya yüklenmiyor?

create table MyTable (
    id integer auto_increment primary key, 
    ... 
) 

Sen tablo adından sonra ithal edilecek sütunları belirtebilirsiniz: Eğer id sütunu belirtmezseniz

LOAD DATA INFILE 'filename' INTO TABLE tablename (col1,col2,...); 

, MySQL dosyadan okumak olmaz.

+0

zaten tabloyu oluştururken otomatik artışlı birincil anahtar olarak ayarlanmış. – jack

+1

harika, işe yarıyor. Teşekkürler. – jack

+3

Not: sütunlar herhangi bir alan/satır/sütun sonlandırıcı/kapalı bildirimlerden sonra gelmelidir. –

İlgili konular