Как ЗАГРУЗИТЬ ДАННЫЕ INFILE в mysql с первым col, являющимся Автоинкрементом? - PullRequest
32 голосов
/ 16 мая 2011

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

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

Идентификатор - автоинкремент

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

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

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

Ответы [ 7 ]

47 голосов
/ 16 мая 2011

Лучше всего просто включить в CSV 2 столбца без автоинкремента, а затем явно указать для столбца ID значение NULL в операторе загрузки данных.

Примерно так:

LOAD DATA INFILE '/tmp/data.csv'
INTO TABLE your_table
FIELDS TERMINATED BY ','
(AField, BField)
SET ID = NULL;
5 голосов
/ 19 июля 2017

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

,afieldvalue,bfieldvalue
...

Механизм SQL назначит NULLв ID поле при чтении такого CSV-файла

2 голосов
/ 25 февраля 2015
LOAD DATA INFILE '/tmp/data.csv'
INTO TABLE your_table
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r'
(AField, BField);
1 голос
/ 16 мая 2011

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

0 голосов
/ 10 ноября 2017
LINES TERMINATED BY '\r\n' 

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

0 голосов
/ 12 октября 2015

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

0 голосов
/ 03 октября 2014

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...