小小少年QAQ 2023-05-26 15:49 采纳率: 30%
浏览 29

merge into修改批量插入

这是后端的代码(mysql)
replace INTO bis_device_station_status("station_id", "online_status", "dbm")
        VALUES
        <foreach collection="list" item="item" separator=",">
            (#{item.station_id},#{item.online_status},#{item.dbm})
        </foreach>

这是我修改的代码(人大金仓)
MERGE INTO bis_device_station_status b
USING (SELECT #{item.station_id} AS station_id, #{item.online_status} AS online_status, #{item.dbm} AS dbm FROM dual) s
ON (b.station_id = s.station_id)
WHEN MATCHED THEN
UPDATE SET b.online_status = s.online_status, b.dbm = s.dbm
WHEN NOT MATCHED THEN
INSERT (b.station_id, b.online_status, b.dbm) VALUES (s.station_id, s.online_status, s.dbm);


有个问题就是最上边的代码是批量插入,而我用MERGE INTO只能是一个一个插入,如何修改MERGE INTO变成批量插入
两段是将mysql 修改成的人大金仓sql
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-28 00:10
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:使用merge into实现千万级别数据迁移
    • 以下回答来自chatgpt:

      答案:

      首先,你可以尝试使用bulk insert来代替merge into。bulk insert是一种更高效的数据批量插入方式,可以大大提高插入效率。下面是一个示例代码:

      BULK INSERT tableName
      FROM 'data.csv'
      WITH (FORMATFILE='format.fmt', FIRSTROW=2, BATCHSIZE=10000);
      

      其中,tableName是要插入数据的表的名称,data.csv是包含要插入数据的CSV文件,format.fmt是格式文件,描述了CSV文件的结构。通过调整BATCHSIZE参数来控制每批插入的记录数,从而达到优化插入效率的目的。

      另外,你还可以考虑以下几点优化你的插入操作:

      1. 使用索引:对于需要经常执行插入操作的表,可以建立适当的索引来加速插入操作。

      2. 分区表:对于数据量非常大的表,可以将其分成多个分区,以便更快地执行插入、查询和删除操作。

      3. 禁用约束:插入大量数据时,可能会遇到一些与表约束有关的问题,如外键约束、唯一性约束等。在这种情况下,一种解决方案是在插入数据时禁用这些约束,插入完成后再启用它们。

      4. 使用存储过程:使用存储过程将多个插入操作组合成一个事务,可以提高整体插入效率。

      综上所述,您可以考虑使用bulk insert,建立适当的索引、分区表,禁用约束和使用存储过程来优化您的插入操作。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 5月26日

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境