作者:熊秋蕾
一、变量的设置和使用
下面是通过查询数据库表的最后插入时间,然后保存到变量中,再传入下一个数据源输入作为参数使用。如图:
在表输入组件中的设置:
其中需要注意的是,查询字段的数据类型,和后面组件使用时的类型,在这里,我需要的是字符串类型的,而INPUT_DATE字段在数据表中的类型是DATA 类型的,所以需要转换成字符串类型的。
在设置变量组件(Set Variables)中的配置:
其中,字段名称是上一个组件传过来的值的名称,变量名自己随便取,活动类型根据需要自行设置。这里可以设置Default value 的值,这个是变量的默认值。
数据源输入中的配置:
这里需要注意的是变量的使用方法,引用变量的方法是 ${变量名} 或者 %%变量名%%。
之前存入变量中的是字符串类型的,但是有个问题,变量中存的类型是normal类型的,在使用变量的时候,不能将 ${变量名} 直接当字符串使用,而是还得在两边加上单引号
‘${变量名}’ 才能作为字符串。
这样就完成了一项变量的设置和使用。
二、增量抽取工作流程实现
下面是一个半自动化的从mysql数据库到Oracle数据库的增量抽取的工作流程
该流程分为 2个job、3个转换。
1.首先是大的job:
2.下面是获取数据源表名转换的内容
其中源数据表名输入的配置如下
3.配置子job为前面的每一条记录(即每个表)执行一次该子job:
4.下面是子job的内容:
表名称变量设置转换的内容如下:
设置变量Set Variables 的配置如下:
接下来是数据抽取转换:
表输入中的配置:
这部分是引用了之前设置的变量 ${TABLENAME} 作为表名参数,然后通过时间戳和上次最后的入库时间进行比对,查询出增量数据。这里需要注意的是,取出来的时间的格式问题,还有,目前由于未实现‘上次最后入库时间’的变量设置和注入,所以这里需要人工干预一下,手动查询出最后入库时间,然后以特定格式的字符串填写在上面的sql语句中。
最后是表输出的配置:
这里由于Oracle数据库中的目标表结构和mysql中的结构和字段名完全一样,所以不需要匹配数据库字段,让其默认自动匹配就行。