使用CSV更新MySQL表记录

时间:2019-01-17 02:43:47

标签: mysql csv import-from-csv

我正在使用版本为5.7.21-21的MySQL,并且我有一个表shipping_rate,其结构如下:

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

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

enter image description here

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

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 :(得分:1)

您缺少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);