java调用kettle文件需要哪些参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java调用kettle文件需要哪些参数相关的知识,希望对你有一定的参考价值。

参考技术A 如下为Java调用本地的转换文件,其中String[] params就是参数,示例传递了两个参数:“123”, “234”,传递的参数全部是字符串类型,使用时需要转换成具体的格式:
[java] view plaincopy
/**
* 调用本地的转换文件(带参数)
*
* @Description:
* @param transFileName
* @throws KettleException
* @author 李文锴
* @since:2012-8-15 下午02:58:54
*/
public static void callNativeTransWithParam(String transFileName) throws KettleException
// 初始化
EnvUtil.environmentInit();
StepLoader.init();
// 转换元对象
TransMeta transMeta = new TransMeta(transFileName);
// 转换
Trans trans = new Trans(transMeta);
String[] params = "123", "234"; // 传递参数
// 执行转换
trans.execute(params);
// 等待转换执行结束
trans.waitUntilFinished();
本回答被提问者和网友采纳
参考技术B 有API的呀,难得看到有人用这个好东东

java中调用kettle转换文件

java中调用kettle转换文件

 

      通过命令行也能够调用,然后java中调用命令行代码也能够。这样没有和java代码逻辑无缝集成。本文说明kettle5.1中假设通过其它API和java代码无缝集成;网上大多数资料都是低版本号的。在kettle5.x中已经不能执行。

1、       须要哪些jar文件

技术分享

以kettle开头的是必须,上图最以下三个也要;红色框中的两个是我測试转换用到的。各自是生成UUID和文件。

要是少了jar文件,执行程序一定报错。大家依据错误到kettle安装文件夹LIB中找对应的jar加到编译路径中。

2、       演示样例说明怎样通过java调用转换

演示样例是把一个excel的内容导入到数据中。excel仅仅有两列,所以须要在kettle中生成一列uuid,然后导入到数据库中。

技术分享

默认生成的uuid有‘-’间隔符,所以通过“Replace in string”替换为空;

技术分享

excel步骤,使用了命名參数,所以要在转换配置设置命名參数。

技术分享

演示样例代码例如以下:

publicclass KettleUtil2 {

   public String RES_DIR = "res";

   private String fullFileName ;

 

   public KettleUtil2(String fileName){

      fullFileName = System.getProperty("user.dir") + File.separator + RES_DIR;

      fullFileName += File.separator + fileName;

   }

   /**

    * 没有參数是,设置參数为null

    * @param paras

    */

   publicvoid runTransformation(Map<String,String> paras) {

      try {

        KettleEnvironment.init();

 

        TransMeta transMeta = new TransMeta(fullFileName);

        Trans  transformation =new Trans(transMeta);

       

        for(Map.Entry<String, String> entry: paras.entrySet()) {

            transformation.setParameterValue(entry.getKey(), entry.getValue());

        }

 

        transformation.execute(null);

        transformation.waitUntilFinished();

       

        if (transformation.getErrors() > 0) {

           thrownew RuntimeException(

                 "There wereerrors during transformation execution.");

        }

      } catch (KettleException e) {

        System.out.println(e);

      }

   }

}


 

最后调用代码例如以下:

publicclass EtlTest {

 

   publicstaticvoid main(String[] args) {

      KettleUtil2 etl = new KettleUtil2("testimport.ktr");

      Map<String,String> para = new HashMap<String,String>();

     

      //给转换中命名參数赋值

      para.put("XlsName", "data");

      etl.runTransformation(para);

   }

}


 

 

 








以上是关于java调用kettle文件需要哪些参数的主要内容,如果未能解决你的问题,请参考以下文章

配置完kettle用写java代码么

kettle中调用java类

如何在 Pentaho 数据集成 (Kettle) 中的“用户定义的 Java 类”步骤中获取所有参数

怎么用java程序调用kettle产生的ktr文件

java调python

linux,windows kettle安装方法