Как пропустить столбцы в 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 ответов
вы также можете отбросить входное значение присвоение его пользовательской переменной и не присваивать переменную таблице колонка:
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'