Rumah  >  Artikel  >  pangkalan data  >  kettle中使用javascript步骤和fireToDB函数实现自定义数据库查询

kettle中使用javascript步骤和fireToDB函数实现自定义数据库查询

WBOY
WBOYasal
2016-06-07 16:06:281280semak imbas

kettle中使用javascript步骤和fireToDB函数实现自定义数据库查询 假设你需要实现非传统的数据库查询操作,为了讨论这种情景,我们假设你需要读取数据库中的正则表达式,然后检查输入的每行的字段匹配表达式的个数。 在javascript步骤执行数据库查询 在javasc

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数据库连接的名称。

\
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:rman(上)Artikel seterusnya:rac下/tmp/bootstrap权限问题