KettleKettle专栏kettle进阶

kettle 另类处理存储过程

2019-07-05  本文已影响1人  默直

kettle 另类处理存储过程


今有一项目需要用kettle访问存储过程,经过测试发现使用【表输入】组件是无法完成的;

以下为测试存储过程

SET @sql =NULL;

SELECT

        ROUND(COUNT(1)*0.1,0) INTO @sql

FROM emp;

SET @sql=concat('SELECT * FROM CD ORDER BY RAND() LIMIT ', @sql);

PREPARE stmt from @sql;

EXECUTE stmt;

DEALLOCATE PREPARE stmt;


此存储过程是查询10%的数据,

第一个select语句:SELECT  ROUND(COUNT(1)*0.1,0) INTO @sql  FROM emp;是查询总数的10%,打印出来是一个数字.

into @sql,是打印出数据并赋值给@sql;

打印数据

第二个select:SELECT * FROM CD ORDER BY RAND() LIMIT ', @sql,得到10%数据的详细信息。

在mysql数据库中执行以上存储过程,能够展示10%的数据,但把此sql赋值到【表输入】组件,发生错误,

如下:

报错

通过了解,第一个sql,得到一个变量值,第二个sql,是把变量值用到自己的sql中;

kettle中怎么实现呢?

首先看结果:

完整流程

第一步:打开【表输入】组件,把第一个sql,写到指定位置,其他不变;


得到变量值

第二步:选择【字段选择】组件,选择“countNumber”字段(变量值);

变量值字段

第三步:选择【表输入】组件,写入第二个sql,到指定位置,并配置信息;

配置信息

结果:得到我们需要的数据。

上一篇下一篇

猜你喜欢

热点阅读