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函数实现自己定义数据库查询的更多相关文章
- kettle中使用JavaScript的一个例子
最近在使用kettle的时候遇到一个问题,需要对输入的一个字段进行格式化,逻辑比较复杂(需要做替换掉指定的字符串,然后将数字部分不足四位的数前边补0等操作),kettle中没有提供直接的插件来支持复杂 ...
- net中前台javascript与后台c#函数相互调用
问: 1.如何在JavaScript访问C#函数? 2.如何在JavaScript访问C#变量? 3.如何在C#中访问JavaScript的已有变量? 4.如何在C#中访问JavaScript函数? ...
- [译]如何在visual studio中调试Javascript
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- JavaScript局部变量变量和函数命名提升
之前接触了一些javascript局部变量命名提升的问题但是一直没有总结今天特地好好总结一下 变量提升 一个变量的作用域是程序源代码中定义的这个变量的区域.全局变量拥有全局作用域,在javascrip ...
- Kettle中JavaScript内置函数说明
本文链接:https://blog.csdn.net/u010192145/article/details/102220563 我们在使用JavaScript组件的时候,在左侧核心树对象栏中可以看到K ...
- KETTLE使用javascript步骤过滤特殊字符
KETTLE使用javascript步骤过滤特殊字符 使用kettle在抽取大量excel数据时.总是遇到excel中有一些特殊字符,导致ExecuteSQL script步骤运行失败,本文记录一些方 ...
- 使用kettle转换中的JavaScript对密码进行加密和解密
日常开发中,为了确保账号和密码的安全,时常要对密码进行加密和解密.然而kettle是怎么对密码进行加密和解密的呢? 下面的代码需要再转换中的JavaScript中运行. var encrypted_p ...
- 博文推荐】Javascript中bind、call、apply函数用法
[博文推荐]Javascript中bind.call.apply函数用法 2015-03-02 09:22 菜鸟浮出水 51CTO博客 字号:T | T 最近一直在用 js 写游戏服务器,我也接触 j ...
- kettle于javascript步骤错误处理
javascript步骤错误处理 假设你熟悉kettle误差特性转换.你可能想知道javascript步骤如何使用.骤用户界面机制是同样的,在javascript步骤右击,选择"定义错误处理 ...
随机推荐
- 第二章 jquery的dom操作
三个方面 dom核心,html-dom和css-dom 一. 1.dom core核心 document.getElementsByTagName("form") 获取表单 ...
- js的编码函数
js对文字进行编码,涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent ...
- JQUERY杂技
JQUERY小技巧 this.value jsobject.val() #aaa:eq(2) 选择第三个id为aaa的元素 $("input")只选择input标签.如:<i ...
- ——CentOS 7 安装SQL Server2019
环境准备 不废话,先把研究环境搭建起来.由于某些原因(晚点再说),本系列首先使用CentOS 7作为操作系统.官方指引中支持的Linux平台及文件系统中并没有指出CentOS,但是作为与Red Ha ...
- NOI2016 区间 【线段树】
题目 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置.换句话说,就是使得存在一个 x,使得对于每一个被 ...
- Java面试题之Java中==和equals()和hashCode()的区别
“==”: ==是运算符,用来比较两个值.两个对象的内存地址是否相等: “equals()”: equals是Object类的方法,默认情况下比较两个对象是否是同一个对象,内部实现是通过“==”来实现 ...
- foj 2150 bfs
题意: 给定一个平面图 . 为空地(不着火) # 为草 开始可以选1-2个草堆点燃,每隔一秒会把上下左右的草引燃(开始时间为0秒) 问把所有草烧光的最少时间 #include<iostream& ...
- 转 #HTTP协议学习# (一)request 和response 解析
http://www.cnblogs.com/bukudekong/p/3834020.html #HTTP协议学习# (一)request 和response 解析 注:本文转自:http:// ...
- System and method for cache management
Aspects of the invention relate to improvements to the Least Recently Used (LRU) cache replacement m ...
- AC日记——[网络流24题]骑士共存 cogs 746
746. [网络流24题] 骑士共存 ★★☆ 输入文件:knight.in 输出文件:knight.out 简单对比时间限制:1 s 内存限制:128 MB 骑士共存问题 «问题描述: ...