使用 CSV 更新 MySQL table 条记录

Update MySQL table records using CSV

我正在使用 5.7.21-21 版本的 MySQL,我有一个 table shipping_rate 结构如下:

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

我想使用 MySQL 命令行使用 csv 文件更新记录,这是我的 csv 文件的样子:

我尝试遵循此 solution,并修改了一些代码以使其适合我的 table:

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;

但我总是得到这样的错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' rate)

您缺少 temp_update_table table 中列的数据类型。

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

在连接中使用的列上添加索引也是一个好主意。

由于您的 CSV 文件有一个 header 行应该被跳过,您需要使用 IGNORE 子句。

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