javascript
kettle中使用javascript步骤和fireToDB函数实现自己定义数据库查询
kettle中使用javascript步驟和fireToDB函數實現自己定義數據庫查詢
?
????? 如果你須要實現非傳統的數據庫查詢操作。為了討論這樣的情景,我們如果你須要讀取數據庫中的正則表達式,然后檢查輸入的每行的字段匹配表達式的個數。
?
在javascript步驟運行數據庫查詢
????? 在javascript步驟初始化的時候,查詢數據庫。獲取正則表達式記錄集。然后每一行的輸入數據循環檢查是否匹配表達式,假設匹配。記錄變量加一,最后把結果寫到到前行的新增字段中。
思路非常清楚,可是怎樣在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數據庫連接的名稱。
總結
以上是生活随笔為你收集整理的kettle中使用javascript步骤和fireToDB函数实现自己定义数据库查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Win 10 应用开发】文件读写的三种
- 下一篇: gradle idea java ssm