zoukankan      html  css  js  c++  java
  • 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数据库连接的名称。

  • 相关阅读:
    Azure SQL Storage
    T-SQL quries
    映射盘符
    繁体及其输入法、乱码问题
    匈牙利命名法
    C++四种转换总结
    windows系统下进程间通信
    Qt 中文字符串问题
    PDB文件详解
    DbgView 无法开启Capture Kernel问题
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5271559.html
Copyright © 2011-2022 走看看