Обновите записи таблицы MySQL, используя CSV - PullRequest
0 голосов
/ 17 января 2019

Я использую MySQL с версией 5.7.21-21, и у меня есть таблица shipping_rate со структурой, подобной этой:

+---------+----+
|entity_id|rate|
+---------+----+

Я хочу обновить запись, используя CSV-файл, используя командную строку MySQL, вот как выглядит мой CSV-файл:

enter image description here

Я пытался следовать этому решению и изменить некоторый код так, чтобы он подходил под мою таблицу:

CREATE TEMPORARY TABLE temp_update_table (entity_id,rate)

LOAD DATA INFILE 'sr.csv' 
INTO TABLE temp_update_table FIELDS TERMINATED BY ',' (entity_id, rate); 

UPDATE shipping_rate
INNER JOIN temp_update_table on temp_update_table.entity_id = shipping_rate.entity_id
SET shipping_rate.rate = temp_update_table.rate;

DROP TEMPORARY TABLE temp_update_table;

но я всегда получаю сообщение об ошибке:

ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL; проверить руководство, которое соответствует вашей версии сервера MySQL для права синтаксис для использования около 'скорость)

1 Ответ

0 голосов
/ 17 января 2019

Вам не хватает типов данных для столбцов в таблице temp_update_table.

CREATE TABLE temp_update_table (
    entity_id INT,
    rate INT,
    INDEX (entity_id)
);

Также неплохо добавить индекс для столбца, используемого в объединении.

Поскольку в вашем CSV-файле есть строка заголовка, которую следует пропустить, вам необходимо использовать предложение IGNORE.

LOAD DATA INFILE 'sr.csv' 
INTO TABLE temp_update_table 
FIELDS TERMINATED BY ',' 
IGNORE 1 LINES
(entity_id, rate); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...