Как пропустить столбцы в CSV-файле при импорте в таблицу MySQL с помощью load DATA INFILE?

у меня есть CSV-файл с 11 столбцами, и у меня есть таблица MySQL с 9 столбцами.

файл CSV выглядит так:

col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11

и таблица MySQL выглядит так:

col1, col2, col3, col4, col5, col6, col7, col8, col9

мне нужно сопоставить столбцы 1-8 CSV-файла непосредственно с первыми 8 столбцами таблицы MySQL. Затем мне нужно пропустить следующие два столбца в CSV-файле, а затем сопоставить столбец 11 CSV-файла с столбцом 9 таблицы MySQL.

на данный момент я использую следующий SQL команда:

LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY 'n'

но приведенный выше код сопоставляет первые 9 столбцов CSV-файла с 9 столбцами в таблице MySQL.

4 ответов


из Mysql docs:

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

LOAD DATA INFILE 'file.txt'  
INTO TABLE t1 (column1, @dummy, column2, @dummy, column3);

Шаг1.интернет с awk.

cat file.txt |awk '{print ,,...}'>new_file.txt

step2.загрузить в MySQL.

load data local infile 'new_file' into table t1(...)

метод ниже прост, но не разрешен в более низкой версии mysql.

LOAD DATA INFILE 'file.txt'  
INTO TABLE t1 (column1, @dummy, column2, @dummy, column3);

@deemi:

единственный способ игнорировать @dummy, установив значение поля по умолчанию AUTO INCREMENT. Таким образом, вы можете пропустить поле и просто код, как это,

LOAD DATA INFILE 'file.txt'  
INTO TABLE t1 (column2, column3, column4, column5);

/ / предполагает, что fieldname column1 установлено значение AUTO INCREMENT по умолчанию.


Я думаю, что есть еще одно изменение в коде:

следующая команда SQL:

LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\n'

- вероятно, приведет к ошибке усечения данных.

так что лучше использовать LINES TERMINATED BY '\r\n' вместо LINES TERMINATED BY '\n'

таким образом, код будет:

LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\r\n'