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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值