kettle从数据表中查询数据作为变量传递使用(单值)

背景

刚开始做增量数据抽取,用的是插入/更新这个组件,经过测试,发现一个问题,数据量一大,传输久了后电脑会变的非常卡慢,而且刚开始传的时候速度很快,到后面就很慢了。
top一看,cpu使用率由原来的50%到了800%,不卡就有鬼了
而且传输了大约300万条(花费30min左右)数据后,还会出现与数据库断线的情况(这个问题的解决方案 )。
然后想了个办法,根据源数据表中的一个自增字段,每隔6分钟传输100万条(可想而之之前到后面的传输速度有多慢),这样速度还算可以,但是每次都需要先手动从源数据表中查询数据后输入到查询语句中,肯定不对劲阿,所以biying之~,发现大家都说用变量,那就用呗。(ps:没人带,自己摸索的解决方案,惨~)

使用变量

在这个时候我已经发现了使用插入/更新来传输大量数据不现实,所以这里使用了表输出来插入数据到目标表
使用到的测试表(oracle)
CREATE TABLE TEACHER(
TNO VARCHAR(3) NOT NULL,
TNAME VARCHAR(4) NOT NULL,
TSEX VARCHAR(2) NOT NULL,
TBIRTHDAY DATE NOT NULL,
PROF VARCHAR(6) NOT NULL,
DEPART VARCHAR(10) NOT NULL,
SALARY NUMBER);

INSERT INTO STUDENT123 VALUES(109,‘王芳’,‘女’,to_date(‘1975-02-10’,‘yyyy-mm-dd’),95031);

  1. job

在这里插入图片描述

  1. get_tno

在这里插入图片描述
设置表输入
在这里插入图片描述设置环境变量,这里点“获取字段”,变量名能更改
在这里插入图片描述
这样我们就从表输入里拿到max(TNO)这个字段

  1. insert

在这里插入图片描述
获取变量,这里注意变量这里,可以用 %%变量名%% 或 ${变量名}
在这里插入图片描述在表输入中使用它,Kettle中参数使用方法有两种:分别是 %%变量名%% 和 ${变量名}。这两种方法变量数据类型都是数字类型,如果传递的是string类型 需要用引号。要点击勾选“替换SQL语句里的变量”
在这里插入图片描述在这里插入图片描述

4.点击 开始运行
在这里插入图片描述
我这里job设置1分钟执行一次,一分钟后执行成功:
在这里插入图片描述

重点

重点是变量名什么时候加$。
要点击勾选“替换SQL语句里的变量”;
要多注意右击查看每个环节的输入输出字段。
希望你有所收获!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值