Mysql LOAD DATA INFILE с первичным ключом автоматического увеличения

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

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

def create_table():
            cursor.execute ("""
                    CREATE TABLE variants
                    (
                    id integer(10) auto_increment primary key,
                    study_no CHAR(40),
                    other fields.....


                    )
                    """)

вот мой запрос LOAD

query1= "LOAD DATA LOCAL INFILE '"+currentFile+"' INTO TABLE variants FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n'"

любые идеи?

Резюме: создать таблицу с дополнительным полем идентификатора, которое будет автоматически увеличиваться загружать данные (20 столбцов) в таблицу из 21 поля, пропуская поле id пусть поле id автоматически заполняется индексом автоматического увеличения.

Ответы

Ответ 1

Укажите список столбцов:

По умолчанию, если в конце инструкции LOAD DATA INFILE не указан список столбцов, ожидается, что строки ввода будут содержать поле для каждого столбца таблицы. Если вы хотите загрузить только некоторые столбцы таблицы, укажите список столбцов:

LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

Ответ 2

LOAD DATA LOCAL INFILE '/var/www/.........../file.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\\r\\n' (field1,field2,.........,fieldn)

Это в случае ubuntu

Ответ 3

ваш файл данных должен выглядеть следующим образом: null, учебные символы, другие поля... MySQL будет вставлять увеличенный id istead из null

Ответ 4

список столбцов должен быть в самом конце, а столбец id должен иметь значение set = null для автоматического увеличения - К сожалению, документация mysql очень расплывчата. они просто говорят col1, col2, но находятся в исходном файле или в таблице dest. Эта страница очень помогла наглядным примерам.

http://www.experts-exchange.com/articles/Database/MySQL/Load-Delimited-Data-into-MySQL-Server.html

Ответ 5

Используйте следующий запрос, если запись csv похожа на

"21231", "234424", "Моя категория", "1"

ЛОКАЛЬНАЯ ИНФЛЯЦИЯ ЗАГРУЗКИ ДАННЫХ 'C:/wamp/www/cakephp/app/webroot/files/product_catalogs/categories.csv'           INTO ТАБЛИЦЫ кошек ПОЛЯ, ЗАКЛЮЧЕННЫЕ ',' ВКЛЮЧЕНЫ '' '           ЛИНИИ, ПРЕРЫВАННЫЕ '\ r\n'           (Category_id, parent_id, категория, is_leaf)

Я сделал это успешно.:)