2009-11-01 9 views
11

Próbowałem załadować plik danych do tabeli mysql przy użyciu "LOAD DATA LOKALNA INFILE" filename "INTO TABLE" tablename "".MySQL LOAD DATA INFILE - Ładowanie pliku bez klucza podstawowego

Problem polega na tym, że plik danych źródłowych zawiera dane wszystkich pól, ale brakuje klucza podstawowego (kolumna "identyfikator"). Muszę dodać unikalny identyfikator do każdej linii pliku danych źródłowych, w przeciwnym razie importowanie nie zostanie zakończone.

Czy istnieje możliwość zignorowania klucza podstawowego w pliku źródłowym lub automatycznego zwiększenia go podczas importu?

Jest już ustawiony na klucz główny z automatyczną inkrementacją.

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

Odpowiedz

13

Dlaczego nie załadować do tabeli, która ma klucz podstawowy z automatyczną inkrementacją?

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

Można określić kolumny, które będą importowane po nazwie tabeli:

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

Jeśli nie określić kolumnę id, MySQL nie będzie czytać z pliku.

+0

jest już ustawiony na automatyczny przyrost klucza podstawowego podczas tworzenia tabeli. – jack

+1

świetnie, to działa. dzięki. – jack

+3

Uwaga: kolumny powinny pochodzić z dowolnego terminatora pola/linii/kolumny/deklaracji obejmujących. –

Powiązane problemy