У меня есть файл CSV, содержащий 10 столбцов. Я хочу выбрать только некоторые столбцы из этого файла и загрузить их в базу данных MySQL с помощью LOAD DATA INFILE
команды.
83
Загрузите данные в таблицу в MySQL и укажите столбцы:
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE t1
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
(@col1,@col2,@col3,@col4) set name=@col4,id=@col2 ;
@ col1,2,3,4 - это переменные для хранения столбцов CSV-файла (предположим, 4) name, id - столбцы таблицы.
ERROR 1148 (42000): The used command is not allowed with this MySQL version
.for i in range(1,100): print("@column",i,",",end="",sep="")
LOAD DATA INFILE 'file.csv' INTO TABLE t1 (column1, @dummy, column2, @dummy, column3, ...) FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\r\n';
Просто замените column1, column2 и т. Д. На свои имена столбцов и поместите @dummy там, где в CSV есть столбец, который вы хотите игнорировать.
Подробности здесь .
источник
(field,names)
точку с запятой в конце, чтобы заставить его работать.Укажите имена столбцов в CSV в операторе загрузки данных в файл.
Код такой:
LOAD DATA INFILE '/path/filename.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' (column_name3, column_name5);
Здесь вы добавляете данные только в два столбца (вы можете выбрать их по имени столбца) в таблицу.
Единственное, о чем вам нужно позаботиться, это наличие CSV-файла (filename.csv) с двумя значениями в каждой строке (строке). В противном случае, пожалуйста, укажите. У меня другое решение.
Спасибо.
источник
Пример:
содержимое файла ae.csv:
CREATE TABLE Tabletmp ( rec VARCHAR(9) );
Для столбца 3:
LOAD DATA INFILE '/local/ae.csv' INTO TABLE Tabletmp FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 2 LINES (@col1, @col2, @col3, @col4, @col5) set rec = @col3; select * from Tabletmp; 2016 1982 1986 1400
источник
если у вас количество столбцов в таблице базы данных больше, чем количество столбцов в вашем CSV, вы можете поступить следующим образом:
LOAD DATA LOCAL INFILE 'pathOfFile.csv' INTO TABLE youTable CHARACTER SET latin1 FIELDS TERMINATED BY ';' #you can use ',' if you have comma separated OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' (yourcolumn,yourcolumn2,yourcolumn3,yourcolumn4,...);
источник
Для тех, у кого следующая ошибка:
Вы можете просто запустить эту команду, чтобы увидеть, из какой папки можно загружать файлы:
SHOW VARIABLES LIKE "secure_file_priv";
После этого вам нужно скопировать файлы в эту папку и запустить запрос
LOAD DATA LOCAL INFILE
вместоLOAD DATA INFILE
.источник