如何通过LOAD CSV更新MySQL表多字段值?ON DUPLICATE KEY报错求助
解决LOAD DATA语句中ON DUPLICATE KEY位置无效的问题
错误原因
你的SQL语句违反了MySQL LOAD DATA的语法规范:ON DUPLICATE KEY UPDATE子句必须紧跟在导入字段列表的括号之后,不能单独分隔;同时你更新主键Storenumber的逻辑毫无意义——主键是唯一约束,触发ON DUPLICATE KEY的前提就是该值已存在,更新主键不会产生任何有效变更。
修正后的SQL语句
USE My_Database; LOAD DATA LOCAL INFILE 'C:/Users/LK/Desktop/Stores_Reno_Update_12.28.23.csv' INTO TABLE Stores_Master FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 ROWS (Storenumber, Store_Name, Location, region_num, inactive_flag) ON DUPLICATE KEY UPDATE Store_Name = VALUES(Store_Name), Location = VALUES(Location), Region_Number = VALUES(region_num), inactive_flag = VALUES(inactive_flag);
关键调整说明
- 修正语法位置:将
ON DUPLICATE KEY UPDATE直接放在字段列表之后,符合MySQL语法要求,解决位置无效的报错。 - 更新有效字段:针对需要修正的
Location、Store_Name等字段进行更新,用VALUES(字段名)引用CSV中对应列的值,确保修正后的数据覆盖原表错误数据。 - 字段映射匹配:CSV中的
region_num对应原表的Region_Number,更新时明确对应关系。 - 简化引号写法:将
ENCLOSED BY '"'改为ENCLOSED BY '"',MySQL可直接识别双引号,避免转义符带来的潜在问题。
内容的提问来源于stack exchange,提问作者LaChelle
相关产品推荐
相关产品推荐

