Kettle根据自增ID循环抽取模型
一、应用场景
在工作中,将源库数据量较大表中的数据抽取到目标库中,由于目标服务器性能配置较低,每次抽取数据量达到一定数量后抽取速度降低至每秒几十条,抽取表中存在自增主键(模型中数据库为oracle,主键ID为自增number为示例),可以采用该模型抽取。
二、kettle模型
1、总体流程
根据表中ID每次递增10进行循环抽取,流程中先获取表中ID的最小值和最大值,首次抽取进行先判断最小值是否小于或等于最大值,条件为真进入循环进行数据抽取。
2、转换配置
2.1涉及表结构
源表T_RESOURCE
临时表TEMP_TARGET
目标表T_TARGET
2.2获取表中最小值
获取表中ID的最小值,如果为空默认值为0,并讲获取的最小值设置为MIN_ID变量。
SELECT NVL(MIN(ID),0) AS MIN_ID FROM T_RESOURCE
2.3获取表中最大值
获取表中ID的最大值,如果为空默认值为0,并讲获取的最大值设置为MAX_ID变量。
SELECT NVL(MAX(ID),0) AS MAX_ID FROM T_RESOURCE
2.4循环条件检验
比较最小值与最大值,判断是否进入循环抽取。
2.5临时表抽取
将MIN_ID与MIN_ID+10之间的数据抽取到临时表中。
2.6目标表抽取
将临时表中数据抽取到目标表中。
2.7添加递增
将目标表中将ID递增,MIN_ID+10,并设置为下次抽取的MIN_ID。
SELECT ${MIN_ID}+10 AS MIN_ID FROM DUAL