利用第三方kettle实现数据库之间的数据同步2(包括mysql和oracle之间数据的对接)

本次例子主要介绍关于如何读取mysql数据存到oracle的完整例子。关于kettle的入门使用有兴趣的可以看我的上一篇文章https://blog.csdn.net/weixin_40496191/article/details/105599434

一、表介绍
本次例子主要涉及到四张表,分别是
oracle临时表:r_temp_value;
oracle历史数据表:r_sample_value;
oracle实时表:r_stock_value;
oracle电站表:r_hydrepower;
mysql的数据表:r_sample_value;
二. 逻辑介绍

  1. 开始
  2. 清空临时表
  3. 设置当前时间变量(供后面存储更新信息log使用,这里暂时没用到,只做介绍)
  4. 开始同步mysql数据到oracle的临时表
    4.1. 取历史数据表的最大时间
    4.2. 根据最大时间从mysql表取出数据
    4.3. 将取出的数据传到临时表
  5. 根据临时表将数据同步到历史数据表和实时表
    5.1. 取历史数据表的最大时间
    5.2. 根据最大时间从临时表取出数据
    5.3. 将数据插入历史数据表
    5.4. 将记录通过sql实现插入/更新到实时表stock
  6. 成功

三、设置步骤并且进行操作

  1. 首先根据大流程先建立一个作业,然后设置主要步骤
    在这里插入图片描述
    如上图所示,我们加入一个开始和一个结束按钮,中间连接一个sql脚本和两个转换
  2. 开始设置start
    在这里插入图片描述
    一般间隔时间不宜设置太短,因为我后面会根据历史记录表的最新时间批量获取,如果间隔时间太短,会导致mysql数据某个时间段还未上传结束,就开始mysql到oracle的转换,导师数据的缺失。
  3. 删除临时表
    在这里插入图片描述
  4. 设置时间变量(也可以忽略不设置,因为本次例子未用到)
    4.1新建转换
    在这里插入图片描述
    4.2获取当前时间
    在这里插入图片描述
    4.3设置时间变量
    在这里插入图片描述
    4.4将新建的转换应用到步骤“设置时间步骤2”中
  5. 同步到临时表
    5.1新建转换在这里插入图片描述
    5.2获取历史数据表最大时间
    在这里插入图片描述
    5.3根据最大时间从mysql获取数据
    在这里插入图片描述
    这里可以直接把之前获取的最大时间拿来用,只需要在“从步骤插入数据”引入上一步即可!!!
    5.4设置临时表的主键序列
    在这里插入图片描述
    这里是为了将数据插入到临时表时有个主键id,所以这里设置了一个序列,当然,也可以不用设置。但是要注意,这里设置的序列需要是数据库存在的序列,否则会报错!!!
    5.5将数据同步到临时表在这里插入图片描述
    5.6将新建的转换应用到步骤“同步到临时表2”中
  6. 同步到历史数据表和实时表
    6.1新建转换在这里插入图片描述
    6.2获取历史数据表最大时间在这里插入图片描述
    6.3根据时间取临时表的数据在这里插入图片描述
    6.4增加序列在这里插入图片描述
    6.5存数据到历史数据表在这里插入图片描述
    6.6从临时表读取最新数据存到实时表
    在这里插入图片描述
    这里我用了关联表存储数据。不是特殊需求,只是想要表明可以通过这种方式,读取的时候关联其他表字段进行存储。
    6.7 将新建的转换应用到步骤“同步到正式表和实时表2”中
  7. 引入成功步骤
    在这里插入图片描述

四、结果

  1. mysql的r_sample_value表
    在这里插入图片描述
  2. oracle的r_hydrepower表
    在这里插入图片描述
  3. oracle的r_temp_value表
    在这里插入图片描述
    因为每次执行步骤都要删除临时表数据,当最新一次执行,没有mysql最新数据传上来时,临时表即为空。
  4. oracle的r_sample_value表
    在这里插入图片描述
  5. oracle的r_stock_value表
    在这里插入图片描述
    有最新mn号的数据传上来,说明有新的水电站,则插入,否则直接覆盖最新数据
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值