Подтвердить что ты не робот

Как загрузить LOAD DATA INFILE в mysql, когда первый col является автоматическим приращением?

В настоящее время у нас есть таблица, подобная этой:

---------------------
ID | AField | BField|
---------------------

Идентификатор - это автоматический приращение

Как создать CSV, который позволяет автозаполнению базы данных заполнять поле идентификатора с помощью номера автоматического увеличения?

Мы пробовали следующий CSV, но он не работает:

afieldvalue, bfieldvalue (With Column definition but still doesn't work)
0,afieldvalue,bfieldvalue 
NULL,afieldvalue,bfieldvalue
4b9b3361

Ответ 1

Самое лучшее, что нужно сделать, это просто включить в CSV 2 столбца с неавтоматическим приращением, а затем явно установить столбец идентификатора в NULL в инструкции infile load data.

Что-то вроде этого:

LOAD DATA INFILE '/tmp/data.csv'
INTO TABLE your_table
FIELDS TERMINATED BY ','
(AField, BField)
SET ID = NULL;

Ответ 2

Вы можете опустить поле идентификатора в строке данных, поместив знак разделителя в начале строки, например (для ID,AField,BField схемы таблицы ID,AField,BField):

,afieldvalue,bfieldvalue
...

Движок SQL будет присваивать NULL поле ID при чтении такого CSV файла

Ответ 3

Попробуйте использовать NULL в качестве значения в файле csv для поля ID.

Ответ 4

LOAD DATA INFILE '/tmp/data.csv'
INTO TABLE your_table
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r'
(AField, BField);

Ответ 5

NULL в CSV файле читается как STRING в MySQL. Если вы хотите иметь нулевые значения в столбце MySQL, вместо \N вместо 'NULL. Это устранит проблему, и вы получите требуемый результат.

Ответ 6

Если у вас есть только небольшое количество столбцов, вы можете просто назвать их: LOAD DATA LOCAL INFILE 'myfile.txt' INTO TABLE mytable (AField); (предполагая только ID и AField)

Ответ 8

LINES TERMINATED BY '\r\n' 

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