У мене є файл CSV, який містить 10 стовпців. Я хочу вибрати лише деякі стовпці з цього файлу та завантажити їх у базу даних MySQL за допомогою LOAD DATA INFILE
команди.
Відповіді:
Завантажте дані в таблицю в 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), ідентифікатори - стовпці таблиці.
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';
Просто замініть стовпці1, стовпці2 і т. Д. Іменами ваших стовпців і вставте @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 (ім’я файлу.csv) з двома значеннями на рядок (рядок). В іншому випадку, будь ласка, згадайте. У мене інше рішення.
Дякую.
Приклад:
вміст файлу ae.csv:
"Date, xpto 14"
"code","number","year","C"
"blab","15885","2016","Y"
"aeea","15883","1982","E"
"xpto","15884","1986","B"
"jrgg","15885","1400","A"
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,...);
Для тих, у кого є така помилка:
Код помилки: 1290. Сервер MySQL працює з опцією --secure-file-priv, тому він не може виконати цей оператор
Ви можете просто виконати цю команду, щоб побачити, з якої папки можна завантажувати файли:
SHOW VARIABLES LIKE "secure_file_priv";
Після цього вам потрібно скопіювати файли в цій папці та виконати запит LOAD DATA LOCAL INFILE
замість LOAD DATA INFILE
.
ERROR 1148 (42000): The used command is not allowed with this MySQL version
.