精华内容
下载资源
问答
  • Kettle 4.0版本以来已经有了Userdefined java class组件,使用户可以写Java代码 让kettle来调用,这就说明了很多kettle不能处理的东西我们可以通过Java代码来实现,步骤如下:一:创建Java Project二:导出Ja...

    ETL工具断断续续的也接触了 Informatica,Kettle, SSIS,个人感觉Info很强大但是也很贵,而且有着一些神秘感。Kettle 4.0版本以来已经有了User  defined java class组件,使用户可以写Java代码 让kettle来调用,这就说明了很多kettle不能处理的东西我们可以通过Java代码来实现,步骤如下:

    一:创建Java  Project

    10412b0635f8be4e2794c2ce8de19bf8.png

    二:导出Jar包

    在main方法中测试Java Project方法无误后 ,导出为jar包,如下图所示

    42b714dc6aa578a5d0c496cc2c1839ab.png

    三:放入kettle目录lib下面

    这里需要注意的是,在网上看到的都是放到 ...\pdi-ce-6.0.1.0-386\data-integration\ libext 下面,这些说的大概是老版本,本人发现在新的版本6.0中根本没有libext这个目录,只有lib目录,那就放在这里吧,结果是正确的

    四:在Java Code 组件中引用

    引用分为三个步骤

    a : 导入import  自定义包的路径

    b : new 一个方法所在的类

    c : 用 a.function()的方法调用自定义类

    如下图所示:

    7b4f092098092d68bc5d8ce16cb11660.png

    五:测试

    一切就绪后,测试调用的结果,看数据库中的小写字母是不是被转换为大写字母输出了,执行结果如下图

    1df8dd20bcb8e98381655b6bad74cf8f.png

    输出结果如下图,kettle已经通过调用自定义的jar包中的function对输入的数据做了转为大写的操作,和理想的效果一样

    3103c4fff92ba1db318c09a2c625dac5.png

    展开全文
  • 放弃不难,但坚持很酷~我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。本篇文章有参考自:...
    937c6c1abaed6d50dfa7ec4049f3cd23.gif

    每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定。

    放弃不难,但坚持很酷~

    我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。

    本篇文章有参考自:https://www.xiaominfo.com/2019/08/13/kettle-12/

    一、在 java 项目中创建工具类

    在项目中,创建 utils 工具类,比如 计算总页码 的一个方法。代码如下:

    public class PaginationUtils {

    /**
    * 计算得到总页码
    * @param totalRecords 总记录数
    * @param pageSize 分页大小
    * @return 总页码
    */
    public static inttotalPage(String totalRecords,String pageSize){
    int totalPage=0;
    try{
    BigDecimal records=new BigDecimal(totalRecords);
    BigDecimal size=new BigDecimal(pageSize);
    BigDecimal _tmp=records.add(size).subtract(new BigDecimal(1));
    BigDecimal _tp=_tmp.divide(size).setScale(0,BigDecimal.ROUND_HALF_UP);
    totalPage=_tp.intValue;
    }catch (Exception e){
    //error
    }
    return totalPage;
    }
    }

    二、部署打包

    工具类方法开发完毕后,可通过 mvn clean package -DskipTests命令进行打包,在 target 目录下,会生成一个 jar 文件。需要将这个 jar 包放到 kettle 的 lib 目录下。如下图所示:

    f5e5c24e8d4cdd6a28362eef27a73864.png

    三、编写 JavaScript 脚本

    重启 Kettle ,新建 JavaScript 脚本,计算总页码的 js 代码如下所示:

    //计算总页码
    var totalPage=com.study.spring.Utils.PaginationUtils.totalPage(countBySql,pageSize);

    其实就是在 js 代码中声明 java 类+方法。

    但是问题来了,kettle 在运行这段 JavaScript 脚本的时候,提示下面这样的错误:

    不能编译 javascript: org.mozilla.javascript.EcmaError: TypeError: Cannot call property totalPage in object [JavaPackage com.study.spring.Utils.PaginationUtils]. It is not a function, it is "object". (#22)

    根据错误信息来看,其实还是没有找到相关类方法,和没放这个 jar 包一样…

    四、FAQ

    上面这个错误究竟是怎么回事呢?我也很奇怪。于是我就用压缩工具也看了看 lib 目录下的其它 jar 包结构,发现人家都是这样式的:

    0f4fb7d8eda63922851cc13f1fafd5cf.png

    而我刚才打的 jar 包目录是这样子的:

    4bc32f20dcc262cf377440016db9dca5.png

    com 目录并没有在 jar 包的根路径下,自然是访问不到那个方法。

    好,问题产生的原因找到了,然后再说一下解决办法:

    在 pom.xml 文件中添加:

    org.springframework.boot
    spring-boot-maven-plugintrue

    pom 文件添加后的效果图如下所示:

    6f76bfbb535450c1b5f415b06d479545.png

    再次打成的 jar 包内部结构为:

    4d15700a521f4134ae62355aaf817d3f.png

    成功!com 目录已经在 jar 包的根路径下了。

    将 jar 包替换到 kettle 的 lib 目录下,重启 Kettle ,再次通过 javascripts 调用自定义 jar 包成功!

    展开全文
  • 这篇文章主要介绍了通过Kettle自定义jar包供javascript使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们都知道 Kettle 是用 Java 语言开发,并且可以在...
  • 这篇文章主要介绍了通过Kettle自定义jar包供javascript使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下我们都知道 Kettle 是用 Java 语言开发,并且可以在 ...

    这篇文章主要介绍了通过Kettle自定义jar包供javascript使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。

    一、在 java 项目中创建工具类

    在项目中,创建 utils 工具类,比如 计算总页码 的一个方法。代码如下:

    public class PaginationUtils {

    /**

    * 计算得到总页码

    * @param totalRecords 总记录数

    * @param pageSize 分页大小

    * @return 总页码

    */

    public static int totalPage(String totalRecords,String pageSize){

    int totalPage=0;

    try{

    BigDecimal records=new BigDecimal(totalRecords);

    BigDecimal size=new BigDecimal(pageSize);

    BigDecimal _tmp=records.add(size).subtract(new BigDecimal(1));

    BigDecimal _tp=_tmp.divide(size).setScale(0,BigDecimal.ROUND_HALF_UP);

    totalPage=_tp.intValue();

    }catch (Exception e){

    //error

    }

    return totalPage;

    }

    }

    二、部署打包

    工具类方法开发完毕后,可通过 mvn clean package -DskipTests 命令进行打包,在 target 目录下,会生成一个 jar 文件。需要将这个 jar 包放到 kettle 的 lib 目录下。如下图所示:

    三、编写 JavaScript 脚本

    重启 Kettle ,新建 JavaScript 脚本,计算总页码的 js 代码如下所示:

    //计算总页码

    var totalPage=com.study.spring.Utils.PaginationUtils.totalPage(countBySql,pageSize);

    其实就是在 js 代码中声明 java 类+方法。

    但是问题来了,kettle 在运行这段 JavaScript 脚本的时候,提示下面这样的错误:

    不能编译 javascript: org.mozilla.javascript.EcmaError: TypeError: Cannot call property totalPage in object [JavaPackage com.study.spring.Utils.PaginationUtils]. It is not a function, it is "object". (#22)

    根据错误信息来看,其实还是没有找到相关类方法,和没放这个 jar 包一样...

    四、FAQ

    上面这个错误究竟是怎么回事呢?我也很奇怪。于是我就用压缩工具也看了看 lib 目录下的其它 jar 包结构,发现人家都是这样式的:

    而我刚才打的 jar 包目录是这样子的:

    com 目录并没有在 jar 包的根路径下,自然是访问不到那个方法。

    好,问题产生的原因找到了,然后再说一下解决办法:

    在 pom.xml 文件中添加:

    org.springframework.boot

    spring-boot-maven-plugin

    true

    pom 文件添加后的效果图如下所示:

    再次打成的 jar 包内部结构为:

    成功!com 目录已经在 jar 包的根路径下了。

    将 jar 包替换到 kettle 的 lib 目录下,重启 Kettle ,再次通过 javascripts 调用自定义 jar 包成功!

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • 我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。 本篇文章有参考自:...
    我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。
    本篇文章有参考自:https://www.xiaominfo.com/2019/08/13/kettle-12/

    一、在 java 项目中创建工具类

    在项目中,创建 utils 工具类,比如 计算总页码 的一个方法。代码如下:

    public class PaginationUtils {
    
      /**
       * 计算得到总页码
       * @param totalRecords 总记录数
       * @param pageSize 分页大小
       * @return 总页码
       */
      public static int totalPage(String totalRecords,String pageSize){
        int totalPage=0;
        try{
          BigDecimal records=new BigDecimal(totalRecords);
          BigDecimal size=new BigDecimal(pageSize);
          BigDecimal _tmp=records.add(size).subtract(new BigDecimal(1));
          BigDecimal _tp=_tmp.divide(size).setScale(0,BigDecimal.ROUND_HALF_UP);
          totalPage=_tp.intValue();
        }catch (Exception e){
          //error
        }
        return totalPage;
      }
    }

    二、部署打包

    工具类方法开发完毕后,可通过 mvn clean package -DskipTests 命令进行打包,在 target 目录下,会生成一个 jar 文件。需要将这个 jar 包放到 kettle 的 lib 目录下。如下图所示:

    22954a49540d5645e1c8cdffc4553a2c.png

    三、编写 JavaScript 脚本

    重启 Kettle ,新建 JavaScript 脚本,计算总页码的 js 代码如下所示:

    //计算总页码
    var totalPage=com.study.spring.Utils.PaginationUtils.totalPage(countBySql,pageSize);
    

    其实就是在 js 代码中声明 java 类+方法。

    但是问题来了,kettle 在运行这段 JavaScript 脚本的时候,提示下面这样的错误:

    不能编译 javascript: org.mozilla.javascript.EcmaError: TypeError: Cannot call property totalPage in object [JavaPackage com.study.spring.Utils.PaginationUtils]. It is not a function, it is "object". (<cmd>#22)

    根据错误信息来看,其实还是没有找到相关类方法,和没放这个 jar 包一样...

    四、FAQ

    上面这个错误究竟是怎么回事呢?我也很奇怪。于是我就用压缩工具也看了看 lib 目录下的其它 jar 包结构,发现人家都是这样式的:

    470573fb7238da6a9f4f1ec43c9e4a7b.png

    而我刚才打的 jar 包目录是这样子的:

    5a6c8ab18be1e8ecc06a1847a45d4cc0.png

    com 目录并没有在 jar 包的根路径下,自然是访问不到那个方法。

    好,问题产生的原因找到了,然后再说一下解决办法:

    在 pom.xml 文件中添加:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>

    pom 文件添加后的效果图如下所示:

    0b3856c8f6895e10d3e89fcc8d0e6f3b.png

    再次打成的 jar 包内部结构为:

    7e376b3780ef8a2c3f5dcc657883c3bb.png

    成功!com 目录已经在 jar 包的根路径下了。

    将 jar 包替换到 kettle 的 lib 目录下,重启 Kettle ,再次通过 javascripts 调用自定义 jar 包成功!


    c16f70f6b965dee9d0efbd7dcdd8ceeb.png
    展开全文
  • 我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。 本篇文章有参考自:...
  • 每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定。放弃不难,但坚持很酷~我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java...
  • 放弃不难,但坚持很酷~我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。本篇文章有参考自:...
  • 在使用Kettle时,如果给定的组件中不能满足我们的需求,可以使用“JavaScript脚本”组件来使用我们自定义的功能。 Kettle版本:8.0 背景:要将传入的时间字符串转换为时间戳(试了“字段选择”组件来修改元数据类型...
  • Kettle中调用用户自定义jar包 ETL工具断断续续的也接触了 Informatica,Kettle, SSIS,个人感觉Info很强大但是也很贵,而且有着一些神秘感。Kettle 4.0版本以来已经有了Userdefined java class组件...
  • kettle调用自定义java

    千次阅读 2017-12-01 11:48:56
    kettle调用自定义java类1.kettle既然可以调用java.sql的文件,自然也可以调用自己写的类,不知道为什么,将用myeclipse生成的jar包放在libswt文件夹下,在java脚本中导入不了,最后放入lib文件夹下才成功。...
  • kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义功能的实现改为在eclipse等ide中...
  • 在【核心对象】-【脚本】下有个【User Defined Java Class】插件,功能很强大,允许自己在这里写java代码,其中用到了一个jar包,janino,有兴趣的自己上网去搜。janino只支持jdk 1.4,所以只能在【User Defined ...
  • (2)Java脚本代码和Jar包在流程中的应用,这一块非常重要,通常情况下很多个性化的处理Kettle没有提供相关组件,就需要自己写JAVA脚本来处理,还可以引入Eclipse中开发的Jar包类库,这些都丰富了Kettle的功能。
  • 思路:在kettle中通过设置自定义常数来获取java脚本的值,在kettle的libswt\win64目录下放入用到的含有java.sql中的类的jar包rt.jar, 在 java脚本中像正常java一样写代码连接数据库。可惜这样查询到的结果会将之前...
  • 前提 通过kettle同步用户账号数据,需要用身份证后六位做...通过查阅相关资料,java片段可以使用jdk的所有类,但是如果是自定义的类则需要将类打入到jar包中,然后放到kettle的lib下,再在java片段中引入该类。但是因为
  • kettle.plugin=E:\zhaxiaodong\plugins //kettle插件目录,可以自定义一个目录,然后将data-integration\plugins目录下所需的插件拷贝到此目录下 kettle.script=Html\js\libs\url //kettle所用到的js文件,目前未...
  • 自定义步骤插件-案例

    2020-01-13 17:40:02
    简要 意图:实现一个实时拉取数据处理kafka消费步骤 自定义步骤如下: ...再者Kettle工作目录里已经有完备的jar包。所以从工作目录data-integration\lib下,拷贝以下jar包到工程中,做好依赖配置 最终工...
  • kettle连接mysql8.0以上版本

    千次阅读 2020-03-15 16:20:13
    1、下载mysql8.0的jar驱动 https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.19 2、将下载好的mysql的驱动放到kettle安装文件中的lib下面,然后重启Spoon 3、连接的两种方式 第一种方式:数据库...
  • 1、下载mysql-connector-java-8.0.x.jar,放到kettle的 data-integration\lib目录下,并重启kettle程序。 2、对于 8.x 版本的 MySQL,jdbc 连接驱动方式有所变化,不能使用现有的 MySQL 连接配置方式,需要使用自定义...
  • 数据库需要下载相应驱动:mysql5,选择了其中一个mysql-connector-java-5.1.26-bin.jar 放在pdi-ce-8.2.0.0-342\data-integration\lib文件夹下即可,有很多文章要求放在pdi-ce-8.2.0.0-342\data-integration\libswt\...

空空如也

空空如也

1 2
收藏数 28
精华内容 11
关键字:

java自定义jarkettle

java 订阅