kettle 另類處理存儲(chǔ)過(guò)程
今有一項(xiàng)目需要用kettle訪問(wèn)存儲(chǔ)過(guò)程,經(jīng)過(guò)測(cè)試發(fā)現(xiàn)使用【表輸入】組件是無(wú)法完成的;
以下為測(cè)試存儲(chǔ)過(guò)程
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;
此存儲(chǔ)過(guò)程是查詢10%的數(shù)據(jù),
第一個(gè)select語(yǔ)句:SELECT? ROUND(COUNT(1)*0.1,0) INTO @sql? FROM emp;是查詢總數(shù)的10%,打印出來(lái)是一個(gè)數(shù)字.
into @sql,是打印出數(shù)據(jù)并賦值給@sql;

第二個(gè)select:SELECT * FROM CD ORDER BY RAND() LIMIT ', @sql,得到10%數(shù)據(jù)的詳細(xì)信息。
在mysql數(shù)據(jù)庫(kù)中執(zhí)行以上存儲(chǔ)過(guò)程,能夠展示10%的數(shù)據(jù),但把此sql賦值到【表輸入】組件,發(fā)生錯(cuò)誤,
如下:

通過(guò)了解,第一個(gè)sql,得到一個(gè)變量值,第二個(gè)sql,是把變量值用到自己的sql中;
kettle中怎么實(shí)現(xiàn)呢?
首先看結(jié)果:

第一步:打開【表輸入】組件,把第一個(gè)sql,寫到指定位置,其他不變;

第二步:選擇【字段選擇】組件,選擇“countNumber”字段(變量值);

第三步:選擇【表輸入】組件,寫入第二個(gè)sql,到指定位置,并配置信息;

結(jié)果:得到我們需要的數(shù)據(jù)。