KETTLE 实现三表同步的问题
来源:互联网 发布:dnf怎么老网络中断 编辑:程序博客网 时间:2024/06/05 05:25
最近根据项目需求 要求用kettle 做一个 三个数据源的 数据抽取工作
具体条件如下
现有三个数据库 test_eemp 中有表ks_actors 最后更新时间字段为 last_modify_date ;
test_dbpec 有表 security_account 最后更新时间字段为 modify_date ;
qjl_test 中有表 security_account 最后更新时间字段为 modify_date ;
三个表的表结构类似 其中一部分字段相同或字段意思 类似
三个表里面都有一个最后更新时间的字段
现在要求 以ks_actors 为主表 两个分别为security_account为目标表 进行同步
同步分析:
1,主表插入数据可能为多次 多时间段 。
2,目标表中的原有数据需要保留且不能破坏 。
3,还要考虑到 假如目标表的其中一个表被破坏掉的时候,我们要确保另一个目标表可以正常更新 。
4,因为三个表不在同一个数据库中,所以我们需要拿到目标表最后更新时间字段 就不能在一条sql 语句中完成(其实大神是可以拿到的,但是对于还是菜鸟阶段的我来说 有点难度,关键在于这一步在表输入里面就算拿到了,对后面的操作也很不利 。 )所以这里我为了 让整个流程变得更加容易理解 我自己创建了另一张表 叫做targettable_last_update_time 看见名字大家就知道这个表的用意了 这个表里面只有一个字段 跟表表名一样 叫做target_table_last_update_time 里面记录的就是目标表最后一次的更新时间,这样没更新一次就把时间记录下来放到这个表里面 下次更新的开始时间就可以从这个时间开始 循环执行
这样的话,我们就以目标表的最后更新时间 modify_date来确定主表的起始更新时间
用主表的最后更新时间来跟,目标表的最后更新时间做对比 如果主表的最后更新时间大于目标表的最后更新时间则视为 主表有数据插入,那么就需要更新 (这个地方是整个程序的关键 只有理解了这一步才能继续往下走)
那么接下来的事情就是sql 语句的编写了
我们接下来看看 需要用到的控件
两个表输入 里面的内容是一样的 就是用主表 ks_actors 和 targettable_last_update_time 做交叉查询,得到主表更新的起始时间
然后可以拿到需要更新的内容 拿到需要更新的内容之后 我们就可以用插入更新 控件来将拿到数据 往目标表里面放,日志 和文本文
件输出 都是可以选择的 不要也没有问题 但是在实际的项目中尽量的用日志来保存更新的纪录 以便于后面 出现问题的时候 查询记录
控件图这样做还可以避免目标表当中的一个被损坏的时候 另一个也不能正常执行
当然了 大神还有更加高明的做法 用替换变量的搞法 我目前就研究出来这个控件图
好了 就写到这里了 希望可以帮到不少kettle的菜鸟 来实现不同数据源的数据同步问题
谨以此文来献给正苦苦挣扎在kettle基础薄弱的自己和各位菜鸟们!!!!
1 0
- KETTLE 实现三表同步的问题
- kettle表数据同步
- kettle表数据同步
- pentaho kettle 实现数据库间增量同步
- 三种方式实现多线程同步问题
- Kettle实现SQL Server数据到GreenPlum的每日同步调度
- kettle数据同步的五种方案
- kettle数据同步的5中方案
- kettle和MongoDB之间的数据同步
- 使用kettle跨库同步表数据
- kettle 通过表名批量同步
- kettle 资源库的一些问题
- kettle 里面的xul实现
- Kettle循环调用的实现
- Kettle表输出报关闭的连接问题的解决方法
- synchronized实现同步的三种用法
- 线程同步的三种实现方式
- kettle工具同步数据乱码-Linux下乱码问题二
- 蓝懿ios技术交流和心得分享12.17
- netty5笔记-concurrent-FastThreadLocal
- Android 自定义ViewPager设置屏蔽左右滑动事件
- 《Linux Shell 脚本攻略》学习记录之一
- 第7周项目3 - 负数把正数赶出队列.cpp
- KETTLE 实现三表同步的问题
- java系统程序员修炼之道
- 《剑指offer》——用两个栈实现队列
- 解决jQuery-validation框架remote校验只能返回true、false问题
- 黑马程序员--约瑟夫环的问题
- Android笔记(3)---Intent之间的传值
- 经典算法之k-means聚类
- oracle数据库表用序列实现主键自增张
- Single Number II