Загрузить данные в таблицу из файла
Простейший способ:
LOAD DATA INFILE 'data.csv' INTO TABLE my_table
Для форматированных данных (например, разделенных запятой):
LOAD DATA INFILE 'data.csv' INTO TABLE my_table
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'
LINES TERMINATED BY '\r\n'
Что это означает?
- Искать концы строк в виде символов '\r\n'
- Разбивать строки на поля по символам запятой (,)
- Ожидать, что поля могут быть заключены в символы цитирования
- Интерпретировать встречающиеся символы табуляции, новой строки или '', предваренные '', как литералы
Ошибка Access denied for user
Если возникла ошибка Access denied for user, добавьте атрибут LOCAL перед INFILE:
LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE my_table
Загрузить данные в таблицу для конкретных полей
LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE t1
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
(@col1,@col2,@col3,@col4) set name=@col4,id=@col2;
LOAD DATA INFILE вместе с JOIN
LOAD DATA LOCAL INFILE 'data.csv' INTO TABLE table_1
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\r\n'
(@col1,@col2,@col3,@col4)
set user_id=@col1, username=(select username from users where user_id = @col1);
The used command is not allowed with this MySQL version
Если возникла такая ошибка, при подключении к MySQL укажите флаг --local-infile:
mysql -uroot --local-infile database
LOAD DATA INFILE игнорировать первую строку
Если в первой строке файла содержатся заголовки полей, добавьте IGNORE 1 LINES
.
Например, для файла data.csv:
id title value
3 Paris 100
4 London 67
5 Moscow 341
Команда загрузки:
LOAD DATA INFILE '/home/user1/data.csv'
INTO TABLE my_table
IGNORE 1 LINES;
Если было полезным, то я был бы рад подписке на мой телеграмм канал и если вы поделитесь с друзьями: @asanovpro