有時候,如果kettle事務中源表的數據非常大的時候,一下子把源表中的數據全部讀入內存的方式是不可取的。在mysql中,我們可以通過循環的方式,使用limit來定量取得一部分數據來處理。即,關鍵的sql是:select * from table_name limit current_value, step_value; 以下做一個思路演示。
1:取得記錄中的所有的數量,初始化當前循環值等;
2:循環的判斷條件是:當前的循環值小於最大的循環值
2.1:修改sql語句中查詢的起始值
2.2:用一個轉換來處理查詢結果,這個例子是將結果追加到文件中;
2.3:將當前的循環值加1;
頂層job的配置
第1步的配置信息
第2步的配置信息
第2.1步的配置信息
var stepValue = new Number(parent_job.getVariable("STEP_VALUE"));
var i = new Number(parent_job.getVariable("CURRENT_LOOP"))*stepValue;
parent_job.setVariable("CURRENT_CURSOR",i);
true;
第2.2步的配置信息
第2.3步的配置信息
var i = new Number(parent_job.getVariable("CURRENT_LOOP"))+1;
parent_job.setVariable("CURRENT_LOOP",i);
true;