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

时间: 2024-10-10 05:14:30

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

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

kettle中使用javascript步骤和fireToDB函数实现自己定义数据库查询 如果你须要实现非传统的数据库查询操作.为了讨论这样的情景,我们如果你须要读取数据库中的正則表達式,然后检查输入的每行的字段匹配表达式的个数. 在javascript步骤运行数据库查询 在javascript步骤初始化的时候,查询数据库.获取正則表達式记录集.然后每一行的输入数据循环检查是否匹配表达式,假设匹配.记录变量加一,最后把结果写到到前行的新增字段中. 思路非常清楚,可是怎样在javascript步骤实

kettle中使用JavaScript的一个例子

最近在使用kettle的时候遇到一个问题,需要对输入的一个字段进行格式化,逻辑比较复杂(需要做替换掉指定的字符串,然后将数字部分不足四位的数前边补0等操作),kettle中没有提供直接的插件来支持复杂的业务逻辑处理,所以就自己写代码来处理. kettle中可以支持Java代码和JavaScript代码,java代码我尝试了几次,不是太稳定,所以就使用了JavaScript 1.在左侧选择脚本中的 JavaScript代码 2.上个步骤传过来的字段 都在Input fields中,在JavaScr

从思维导图中学习javascript第六章函数基础

Kettle中JavaScript内置函数说明

本文链接:https://blog.csdn.net/u010192145/article/details/102220563 我们在使用JavaScript组件的时候,在左侧核心树对象栏中可以看到Kettle为我们提供了很多简洁强大的内置函数,帮助我们在写脚本的时候对数据.参数变量等能很轻松的做处理,体验编码的感觉.本篇将详细介绍JavaScript组件中的函数功能 脚本组件包含的函数主要包括六大类,分别是: 字符串类型的函数(String Functions) 浮点型的函数(Numeric

kettle中javascript步骤错误处理

javascript步骤错误处理 如果你熟悉kettle转换的错误特性,你可能想知道在javascript步骤如何使用.支持错误机制的步骤用户界面机制是相同的,在javascript步骤右击,选择"定义错误处理"启用错误处理并配置.javascript代码可以识别错误行,并将他们转发到配置的错误处理步骤,通过使用_step_对象的putError()方法,需要以下几个参数: 1)    RowMetaInterface对象描述行结构 2)    当前的错误行 3)    在此行检测的错

KETTLE使用javascript步骤过滤特殊字符

使用kettle在抽取大量excel数据时,总是遇到excel中有一些特殊字符,导致ExecuteSQL script步骤执行失败,本文记录一些方法过滤一些特殊字符.同行有更好的方式实现,欢迎指点,共同学习. 完整的实现转换截图如下 1.  使用javascript步骤过滤所有string字段的字符 使用javascript步骤可以通过代码来实现,避免增加过多的步骤,且一次性过滤所有的字段:代码如下: for (vari=0;i<getInputRowMeta().size();i++){ /

使用kettle转换中的JavaScript对密码进行加密和解密

日常开发中,为了确保账号和密码的安全,时常要对密码进行加密和解密.然而kettle是怎么对密码进行加密和解密的呢? 下面的代码需要再转换中的JavaScript中运行. var encrypted_password = 'not encrypted'; 加密(js中调用): encrypted_password = "Encrypted " + Packages.org.pentaho.di.core.encryption.Encr.encryptPassword(clear_pass

javascript在私有作用域中定义私有变量和私有函数 (1)

javascript没有私有成员,但是有私有变量,所有对戏那个属性都是公有的 任何在函数中定义的变量,都可以认为是私有变量,因为函数内部不能访问. 私有变量包括:函数的参数.局部变量.函数内部定义的其他函数 - 在私有作用域中定义私有变量和私有函数 function MyObject(){ //私有变量和私有函数 var privateVariable=10; function privateFunction(params) { return false } //特权方法----有权访问私有变量

JavaScript进阶系列02,函数作为参数以及在数组中的应用

有时候,把函数作为参数可以让代码更简洁. var calculator = { calculate: function(x, y, fn) { return fn(x, y); } }; var sum = function(x, y) { return x + y; }, diff = function (x, y) { return x - y; }; var sumResult = calculator.calculate(2, 1, sum), diffResult = calculat