gpt4 book ai didi

mysql - 从 tmp 数据库中的表插入和更新到另一个数据库中的表

转载 作者:行者123 更新时间:2023-11-28 23:30:30 35 4
gpt4 key购买 nike

我目前正在尝试将数据从 csv 文件加载到数据库中的表中,插入任何新条目并更新旧条目。该表的列(field1、field2、field3、field4、field5)以 field1 作为主键,而 csv 的值仅包含列(field1、field2、field3)。解决这个问题的最佳方法是什么?目前我正在考虑按如下方式处理它:

  • 在 tmp 中创建一个表,比如 tmp_table
  • 使用“加载数据”在 tmp_table 中加载 csv
  • 使用如下查询更新旧条目

    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 表后,使用表 1 中现有记录的值更新 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

关于mysql - 从 tmp 数据库中的表插入和更新到另一个数据库中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37471844/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com