kettle 另类处理存储过程

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,到指定位置,并配置信息;

配置信息

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容