Данные загрузки MySQL - есть ли способ игнорировать первый столбец?

Я пытаюсь загрузить файл в таблицу mysql, используя LOAD DATA INFILE. Файл csv и таблица назначения имеют следующую структуру:

Файл /data/data.csv

,col1,col2,col3
,2101,val2,val3

Таблица

  • col0ID = INT автономный
  • col1 = INT
  • col2 = VARCHAR
  • col3 = VARCHAR

Когда я запускаю приведенный ниже сценарий, я получаю следующую ошибку: Error Code: 1366. Incorrect integer value: '' for column 'col1' at row 1

Я думаю, это из-за префикса запятой в начале строки. Если я удалю запятую в начале заголовка и строки, тогда импорт будет работать нормально.

Есть ли способ указать mysql загружать данные, игнорируя первую запятую в заголовке и строках? Или мне придется предварительно отформатировать файл с помощью кода (python или C #)?

фрагмент MySQL LOAD DATA

load data infile '/data/data.csv'
into table Staging
fields terminated by ',' enclosed by ''
lines terminated by '\r\n'
ignore 1 LINES
(col1,col2,col3)
set col0ID=null;

Как было предложено в комментариях, я рассмотрел аналогичный [вопрос] (Как пропустить столбцы в файле CSV при импорте в таблицу MySQL с помощью LOAD DATA INFILE?) И попытался использовать переменную в столбцах, например (@ discard, col1, col2, col3), но все равно не удается с той же ошибкой. В моем сценарии заголовок столбца также предваряется запятой. Похоже, мне, возможно, придется предварительно обработать и очистить файл перед импортом ....


person anon_dcs3spp    schedule 23.05.2021    source источник
comment
Отвечает ли это на ваш вопрос? Как пропустить столбцы в файле CSV при импорте в таблицу MySQL с помощью LOAD DATA INFILE?   -  person Squirrel.98    schedule 23.05.2021
comment
Спасибо, пробовал использовать (@ discard, col1, col2, col3), но все равно не работает с той же ошибкой. В моем сценарии заголовок столбца также предваряется запятой. Похоже, мне, возможно, придется предварительно обработать и очистить файл перед импортом ....   -  person anon_dcs3spp    schedule 23.05.2021
comment
Спасибо!!! Это сработало, теперь я получаю другую ошибку, относящуюся к другой строке. Оценил :) Я сниму вопрос в течение следующих 15 минут ...   -  person anon_dcs3spp    schedule 23.05.2021
comment
Пожалуйста, не удаляйте вопрос. Вместо этого, пожалуйста, ответьте сами, сказав, что вы сделали; Так следующий человек сможет воспользоваться вашей мудростью.   -  person O. Jones    schedule 23.05.2021


Ответы (1)


Решил это благодаря предложению в комментариях к связанной вопрос.

load data infile '/data/data.csv'
into table Staging
fields terminated by ',' enclosed by ''
lines terminated by '\r\n'
ignore 1 LINES
(@discard,col1,col2,col3)
set col0ID=null;

По сути, он загружает первый пустой столбец, обозначенный, (в начале строки), в переменную с именем @discard.

Теперь он считывает данные из 78 строк, прежде чем возникнет другая несвязанная ошибка ...

person anon_dcs3spp    schedule 23.05.2021