美文网首页KettleKettle专栏kettle进阶
kettle 另类处理存储过程

kettle 另类处理存储过程

作者: 默直 | 来源:发表于2019-07-05 18:18 被阅读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,到指定位置,并配置信息;

    配置信息

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

    相关文章

      网友评论

        本文标题:kettle 另类处理存储过程

        本文链接:https://www.haomeiwen.com/subject/srlehctx.html