MySQL LOAD DATA INFILE - загрузка файла без первичного ключа - PullRequest
11 голосов
/ 01 ноября 2009

Я пытался загрузить файл данных в таблицу mysql, используя «LOAD DATA LOCAL INFILE» имя файла «INTO TABLE« имя таблицы »».

Проблема в том, что файл данных источника содержит данные всех полей, но первичный ключ отсутствует (столбец 'id'). Я должен добавить уникальный идентификатор в каждую строку файла исходных данных, иначе импорт не будет выполнен.

Есть ли возможность игнорировать первичный ключ в исходном файле или автоматически увеличивать его при импорте?

Уже задан первичный ключ с автоинкрементом.

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

1 Ответ

13 голосов
/ 01 ноября 2009

Почему бы не загрузить таблицу с первичным ключом с автоинкрементом?

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

Вы можете указать столбцы, которые будут импортированы после имени таблицы:

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

Если вы не укажете столбец id, MySQL не будет читать его из файла.

...