Kettle 数据同步 原始表和目标表的数据对比技术请教与讨论

场景:
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个方案的可行性如何,或者大佬们 有没有更加好的方案??



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现kettle同步Oracle数据,可以使用Kettle工具中的相关组件和功能来完成。下面是一个简单的步骤: 1. 数据源配置:首先,在kettle中配置连接到Oracle数据库数据源。通过在"数据库连接"组件中输入相关的连接信息,如主机名、端口号、用户名和密码等来建立与Oracle数据库的连接。 2. 数据抽取:在Kettle中使用"Table input"组件来抽取源中的数据。在该组件中,选择连接到Oracle数据库数据源,并指定要抽取的名或查询语句。可以使用该组件的参数设置功能来进一步定义抽取数据的条件。 3. 数据转换:使用"Select values"、"Add constants"、"Replace in string"等组件来进行数据转换和处理。例如,可以将日期格式进行转换、对某些字段进行计算、添加常量字段等。这些转换步骤可以根据需要进行设置和调整。 4. 数据加载:在Kettle中使用"Table output"组件来将转换后的数据加载到目标中。在该组件中,选择连接到Oracle数据库目标以及相关的字段映射。可以使用该组件的插入方式设置来选择插入新数据或更新已有数据。 5. 任务调度:在Kettle中创建一个任务调度,定义数据同步的周期和执行方式。可以设置定时触发,也可以通过外部事件触发,保证数据同步的持续性和准确性。 通过以上步骤的设置和配置,可以实现Kettle同步Oracle数据的功能。根据具体需求,还可以进行更复杂的数据转换和处理,来满足数据同步的要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值