一:增量转换:
前提:要实现增量更新的前提必须是原表必须要有一个时间字段,然后目标表根据这个时间字段来做查询和更新
大致思路: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博客 ” ,链接:http://blog.itpub.net/29654823/viewspace-1435463/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29654823/viewspace-1435463/