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

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

  1. get_tno

《kettle从数据表中查询数据作为变量传递使用(单值)》
设置表输入
《kettle从数据表中查询数据作为变量传递使用(单值)》设置环境变量,这里点“获取字段”,变量名能更改
《kettle从数据表中查询数据作为变量传递使用(单值)》
这样我们就从表输入里拿到max(TNO)这个字段

  1. insert

《kettle从数据表中查询数据作为变量传递使用(单值)》
获取变量,这里注意变量这里,可以用 %%变量名%% 或 ${变量名}
《kettle从数据表中查询数据作为变量传递使用(单值)》在表输入中使用它,Kettle中参数使用方法有两种:分别是 %%变量名%% 和 ${变量名}。这两种方法变量数据类型都是数字类型,如果传递的是string类型 需要用引号。要点击勾选“替换SQL语句里的变量”
《kettle从数据表中查询数据作为变量传递使用(单值)》《kettle从数据表中查询数据作为变量传递使用(单值)》

4.点击 开始运行
《kettle从数据表中查询数据作为变量传递使用(单值)》
我这里job设置1分钟执行一次,一分钟后执行成功:
《kettle从数据表中查询数据作为变量传递使用(单值)》

重点

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

    原文作者:Programmer-Awei
    原文地址: https://blog.csdn.net/qq_32656561/article/details/103990032
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞