我正在使用版本为5.7.21-21的MySQL,并且我有一个表shipping_rate
,其结构如下:
+---------+----+
|entity_id|rate|
+---------+----+
我想使用MySQL命令行使用csv文件更新记录,这是我的csv文件的样子:
我尝试遵循此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服务器版本相对应的手册 使用接近'率的语法)
答案 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);