Как загрузить 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
Ответы
Ответ 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)
Ответ 7
Другие подходы можно найти на этом сайте: введите описание ссылки здесь
Ответ 8
LINES TERMINATED BY '\r\n'
Это было ключом к успеху для меня при использовании текстового файла