数据对比,列出数据修改、新增、删除记录

在无法直接通讯的A系统和B系统间,为实现数据同步,B系统全量数据导出后需在A系统中判断增删改。通过创建临时表存储数据,使用Oracle的MINUS操作找出新增和删除记录,再通过SQL查询确定修改数据。在处理过程中遇到Spring的JdbcTemplate限制及Oracle中NULL处理等问题,最终实现数据的高效同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先说下应用场景,客户方有两套人力资源管理系统,假设A系统和B系统,A系统是国内总部的,B系统是海外子公司的,现在A系统总部要求,能看到海外B系统的数据,因为A系统和B系统是不可能直接通讯的。所以需要B系统定期把数据导出,然后再导入到A系统,本来只要B系统每次都导出增量数据,那么A系统就不需要做多少事情了。结果B系统一方的实施方不愿意导出增量数据,只能每次导出全量数据,结果A系统在B系统每次导入全量数据的时候就需要去判断新增了多少数据,修改了多少数据,删除了多少数据。于是哥哥我就接到了这个坑爹的任务。。。。

1、我们设计了几张临时表,用于储存临时数据,使用的是窄表,即KEY-VALUE这样模式的表结构。比如有一条记录 USER_ID:001,USER_NAME:TOM,USER_AGE:18;

那么数据库存储为3条记录:

ID:001,KEY:USER_ID,VALUE:001

ID:001,KEY:USER_NAME,VALUE:TOM

ID:001,KEY:USER_AGE:18

2、工作过程,首先导入的数据先全部拆分到TEMP的临时表中,然后抽取A系统中已存在的数据,同样拆分到另一张TEMP1临时表中,然后使用MINUS(oracle数据库的关键字)来相减TEMP和TEMP1的全部数据,这样就能得出新增和删除的数据,然后还需要用一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值