gpt4 book ai didi

mysql - 首先执行 UPDATE,然后将新数据(报告)插入 mysql

转载 作者:行者123 更新时间:2023-11-30 00:48:06 25 4
gpt4 key购买 nike

我在制表符分隔的文件中收到一份报告,其中存储了一些 SKU 及其当前数量。这意味着大多数时候库存是相同的,我们只需更新数量即可。但可能会发生这样的情况:列表中存在新的 SKU,我们必须插入而不是更新。

我们使用 INNODB 表来存储这些 SKU。目前,我们只是通过制表符和换行符剪切文件,然后进行 INSERT ... ON DUPLICATE KEY UPDATE 查询,这是相当低效的,因为 INSERT 在 INNODB 上非常昂贵, 正确的?这也很棘手,因为当包含大量 SKU 的列表超过 20k 时,只需要几分钟的时间。

所以我现在的解决方案是在临时表中创建一个LOAD DATA INFILE,然后执行INSERT ... ON DUPLICATE KEY UPDATE,这应该是我认为更快。

还有另一种解决方案,首先执行简单的UPDATE,并且仅当还剩下一些时,它才会执行并INSERT?这将是完美的,但我却找不到任何相关信息。有没有办法删除返回 update: 1 的行?

最佳答案

  1. 按表的主键对 CSV 文件进行排序。

  2. 将 DATA INFILE 加载到单独的表中(如您所说)

  3. INSERT INTO real_table SELECT * FROM tmp_table ON DUPLICATE KEY UPDATE ... -- 注意:这是单个 INSERT。

警告:这可能会阻止该表在步骤 3 中被其他用途使用。解决方案:将 CSV 分成 1000 行 block 。在每个 block 之后提交。

关于mysql - 首先执行 UPDATE,然后将新数据(报告)插入 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21205251/

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