场景:
1. 2个数据库在做数据同步的传输, 数据库A为 mysql 数据库B 为 sqlserver
2. 每次将数据库A的表table1 同步到 数据库B的table2
3. 同步的时候 是根据 主键GID 为唯一性的判断, GID+时间+ 状态码 是更新的判断依据
4. 同步数据的过程中,table 1 是根据 查询的时间进行了条件过滤, 因此 table 1 的数据行是有控制的
问题点:
1. 由于在数据同步的过程中,如果对table 2 进行 统一的时间过滤时,会出现主键冲突, 原因是: table1 的这个数据可能是上个月同步有一次,保留在table 2 里面一直是 上个月的时间, 但是今天突然发生了变化,如果加时间过滤的话,会导致 没有查询到此结果集,最好以新增的形式 同步过去,最终主键冲突
2:由于在问题1的情况下,导致了每次查询table2 的数据都是全量查询,因此,每次数据对比的时候耗时很大
解决方案点:
1. 能否将table 1 中查询的主键GID ,通过变量 赋值的方式 赋值到 table 2 中做查询,这样 是不是每一次就可以控制table 2的查询结果集了
2 能否将table 1查询的结果集,直接插入到 数据库B 的1个临时表,然后,table 2 和临时表做关联,也可以控制table2的查询结果集数量
疑惑点:
这2个方案的可行性如何,或者大佬们 有没有更加好的方案??
Kettle 数据同步 原始表和目标表的数据对比技术请教与讨论
最新推荐文章于 2024-05-14 15:00:00 发布