ITPub博客

首页 > 大数据 > 数据挖掘 > 增量转换 oracle到MySQL

增量转换 oracle到MySQL

原创 数据挖掘 作者:贺子_DBA时代 时间:2015-02-13 18:22:52 0 删除 编辑
一:增量转换: 
 
前提:要实现增量更新的前提必须是原表必须要有一个时间字段,然后目标表根据这个时间字段来做查询和更新
大致思路:get_systime这个输入得到实时动态的当前时间,然后通过更新来动态同步uptime 这张表的modifytime属性,uptime表需
要自己建立,并且要插入数值,否则不能循环,{表的结构:create table UPTIME ( modifytime DATE,   name       VARCHAR2(40) )   }      get_time 这个输入 是要得到uptime表的最新的时间这个属性,get_value这个输入就是说要选择要同步到mysql的表的内容,in&up_mysql这个插入或更新是和目标mysql 数据库联系起来的, 

get_time 里面sql :select modifytime from uptime where name='test'                           #这里的test是你所要同步的表的所有者,
get_systime 里面sql : SELECT sysdate,'test' name from dual
更新里面内容 如下图,目标表就是要更新的表,更新字段下的流里的字段就是就是前面一个输入里的表的一个字段,这里使用是前面得到的sysdate来更新表UPTIME的MODIFYTIME字段值,
get_value里面:  
SELECT
  ID as "featureId"
, KEY_NAME as "featureName"
, CLASSIFY_ID as "ctgId"
, null as "description"
, sysdate as "syncTime"
, 1 as "langType"
, ORDER_NO as "sort"
FROM TEST.TD_ATTRIBUTE_KEY where modify_time>?                                                  ##?表示从上一个输入来取值。

in&up_mysql这个插入或更新:   获取字段   就会显示你在目标mysql数据库里要同步的表的字段,这里选择一个属性和选择三个属性的区别是:选择一个就是在插入或更新时,只对比这一个属性值,相同则不会插入或更新,反之,插入更行,如果选择三个属性,就会比较这三个属性值,都相同才不插入更行,要是有一个不同,就会更新这行数据,所以你要想让源库oracle 和目标库MYsql 某个表的数据完全一样,那就应该把所有的字段都选择上,

注意:1.如果在运行转换的时候,说无法打开转换,那可能是由于长时间不运行这个转换,导致虽然tools里显示资源库连接正常但是实际上已经失效,所以你只要断开重连即可,这里所说的资源库是指通过该数据库连接直接在数据库里面创建kettle表,表里面记录着你所做的任何保存过的记录以及转换和任务。2插入和更新  与 输出的区别 :前者能更新,后者不能更新,只能按条件插入,  3.oracle 和mysql 数据类型的差别:

使用技巧:如果一个服务器上有多个数据库,那么在做DB连接的时候,可以直接用数据库复制,然后再在复制品上直接改就行,
在做转换的时候也可以直接把已经做好的转换以不同名称保存转换(可以理解为复制了一个) ,然后改相应的表名,用户名,即可,





 






来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29654823/viewspace-1435463/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
10年数据库管理员从业经历,熟悉Oracle、mysql、tidb、oceanbase、redis、 mongodb 、python等技术栈,持有11g ocm 、mysql 5.7 ocp 、tidb 5.0 ptcp、tidb 6.0 ptca、oceanbase obcp等

注册时间:2014-05-12

  • 博文量
    327
  • 访问量
    2148976