批量插入对新数据进行插入操作,已存在的记录进行更新操作

Posted 我是廖志伟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批量插入对新数据进行插入操作,已存在的记录进行更新操作相关的知识,希望对你有一定的参考价值。

有这样一个需求:

第一次插入1,2
第二次插入1,3
要求结果为1,3的数据是有效的,2的数据是无效的

上述的表字段较少,实际开发场景表字段还会多好几倍

解决方案:将单表的字段进行md5加密得出一个版本id,后续只要插入的字段是一样的,那么加密出来的版本id肯定也是一样的。

插入之前先去库里查询版本id,是否和插入字段md5加密得出来的结果一样。

第一次插入直接入库,第二次插入发现有一条记录一样,说明插入的数据中有一条记录已经在数据库里面了。

如果一样说明这一批插入的数据在库里已经有了,不需要插入了。

第一次插入的1和第二次插入的1,他们二个的versionId是一样的,就不需要插入了。

如果不一样,则需要把之前插入的数据进行清洗。

第一次插入的2和第二次插入的3,他们二个的versionId是不一样的,需要将2改为无效,将3改为有效。

清洗步骤:

  • 第一步:直接将库中所有的数据status状态改为无效。

1,2,3的status都改为无效2

  • 第二步:将插入的数据status改为有效

1,3的status改为有效了,2还是无效

这样得出来的结果就符合需求了。

以上是关于批量插入对新数据进行插入操作,已存在的记录进行更新操作的主要内容,如果未能解决你的问题,请参考以下文章

将MYSQL某一数据库中的多条记录批量插入到另一MYSQL数据库时,记录不存在则插入,存在则更新

MySQLGORM插入数据,存在则覆盖之前的数据

Mybatis+Oracle进行数据的批量插入和更新

批量数据进行插入和修改

MySQL+MyBatis一条命令批量插入或更新

MySQL+MyBatis一条命令批量插入或更新