为了账号安全,请及时绑定邮箱和手机立即绑定

如果存在则不插入,有什么高效的方式实现?

如果存在则不插入,有什么高效的方式实现?

慕容3067478 2022-09-16 15:11:22
现需要实现定期将项目A的数据同步到项目B中,从项目A提供了基于HTTP的接口获取数据,解析数据,并将解析到的数据批量插入到项目B的数据库中,但是有一个要求插入之前必须要判断当前数据是否存在。
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

分2步骤做:
1.首先用关键字区建立2类记录,即已经存在的记录和不存在的记录;
2.对已经存在的记录进行一次批量的Update操作,不做数据的比对工作;
3.对不存在的记录进行一次批量的insert操作;
这个样的效率要高很多。至于你用什么做批量操作就要看你用的数据库了。

查看完整回答
反对 回复 2022-09-21
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

个人感觉,通过新建临时表,现将数据插入到临时表中,在通过sql中去重语句去掉重复的记录,然后在将临时表中的数据通过方式同步到另外的数据库中,这样相对安全和效率来说,还算可以。

查看完整回答
反对 回复 2022-09-21
?
白板的微信

TA贡献1883条经验 获得超3个赞

从题主的描述来看:
1:定期同步 :说明数据实时性要求不高,只是周期性同步。
2:HTTP的接口获取数据 :用HTTP说明数据量不大。
不了解题主所说的高效指的什么:
两种可能:
高效开发,维护:即最小开发量,日后维护量也小。
高效同步数据:即数据快速同步。
    可选择的方案是:文件全量同步,ftp+shell脚本+sqlloader全是配置工作,开发量最小,好维护。同时sqlloader装载速度最快,全量同步,不用考虑数据一致性问题。
如果无法做全量同步,只能增量的话,就要考虑数据重复,及一致性问题。
比较好的方案是:先装载到临时表,然后库内做merge,update.

查看完整回答
反对 回复 2022-09-21
  • 3 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信