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

您所在的位置:网站首页 获取查询结果 kettle从数据表中查询数据作为变量传递使用(单值)

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

2024-01-15 05:23| 来源: 网络整理| 查看: 265

背景

刚开始做增量数据抽取,用的是插入/更新这个组件,经过测试,发现一个问题,数据量一大,传输久了后电脑会变的非常卡慢,而且刚开始传的时候速度很快,到后面就很慢了。 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);

job

在这里插入图片描述

get_tno

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

insert

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

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

重点

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3