我目前正在尝试将csv文件中的数据加载到数据库中的表中,插入任何新条目并更新旧条目。该表具有说字段(field1,field2,field3,field4,field5)的列,其中field1作为主键,而csv具有仅包含列的值(field1,field2,field3)。解决这个问题的最佳方法是什么?目前,我正在考虑采用以下方法:
使用查询更新旧条目
UPDATE db.table1 t INNER JOIN tmp.tmp_table s ON (t.field1=s.field1)
SET t.field1 = s.field1, t.field2 = s.field2, t.field3 = s.field3
插入新条目
INSERT INTO db.table1(field1, field2, field3)
SELECT t.field1, t.field2, t.field3
FROM tmp.tmp_table t
LEFT JOIN db.table1 v ON (t.field1=v.field1)
WHERE v.field1=NULL
关于改进/优化/纠正步骤有何评论?
由于您使用的是MySQL,因此建议您使用这种非通用解决方案。
在您的tmp表中包括field4和field5。
创建tmp表后,使用table1中现有记录的值更新field4和field5。
UPDATE tmp.tmp_table s INNER JOIN db.table1 t ON (t.field1=s.field1)
SET s.field4 = t.field4, s.field5 =t.field5
然后
REPLACE INTO db.table1 VALUES (field1, field2, field3, field4, field5)
SELECT t.field1, t.field2, t.field3, t.field4, t.field5
FROM tmp.tmp_table t
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句