kettle中使用javascript步驟和fireToDB函數實現自訂資料庫查詢,kettlefiretodb

來源:互聯網
上載者:User

kettle中使用javascript步驟和fireToDB函數實現自訂資料庫查詢,kettlefiretodb

kettle中使用javascript步驟和fireToDB函數實現自訂資料庫查詢

 

      假設你需要實現非傳統的資料庫查詢操作,為了討論這種情景,我們假設你需要讀取資料庫中的Regex,然後檢查輸入的每行的欄位匹配運算式的個數。

 

在javascript步驟執行資料庫查詢

      在javascript步驟初始化的時候,查詢資料庫,擷取Regex記錄集。然後每一行的輸入資料迴圈檢查是否匹配運算式,如果匹配,記錄變數加一,最後把結果寫到到前行的新增欄位中。思路很清楚,但是如何在javascript步驟實現資料庫查詢?

      這裡介紹一個非常有用的函數fireDb(),他需要事先在轉換中定義好一個資料庫連接作為參數,以及一個SQL查詢語句參數,這裡的sql只能是select查詢語句,因為fireDb()函數沒有事務或錯誤處理,返回值是記錄行的數組,每行是一個有多個欄位的數組。

      下面是程式碼片段,這段代碼只執行一次,最好放在initialization tab,這樣可以提高javascript步驟的執行效率。

// read all rules from Scrapbook DB

var xArr =fireToDB("Scrapbook", "SELECT rule FROM rules;");

var regex = [];  

// for each row, save the returned rulefor later use

for (var i in xArr){     

regex.push(xArr[i][0]);

}

下面這些代碼是每行都要執行的;

var rules_matched = 0;

var jstr = newjava.lang.String(string_to_test);  

// count matching rules

for(var i in regex){      

varrule = regex[i]; 

   if (jstr.matches(rule)){

        rules_matched++;    

}  

}

可以在這裡下載樣本,試試fireDb()函數的用法,樣本中mysql的樣本資料的SQL語句。其中代碼中“Scrapbook”是轉換中定義的與mysql資料庫連接的名稱。




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.