zoukankan      html  css  js  c++  java
  • 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);
    
       }
    
    }


  • 相关阅读:
    PostMessage
    __stdcall
    C++中L和_T()之区别
    号外:百度开源了它的人工智能技术
    最棒的Unity Github 项目收集(2016)
    OpenGL学习笔记——求值器和NURBS
    unity3d四元数和旋转矩阵
    C# System.Timers.Time
    进程地址空间分布
    子进程与父进程
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7280128.html
Copyright © 2011-2022 走看看