java中调用kettle转换文件

来源:互联网 发布:2017超好听的网络歌曲 编辑:程序博客网 时间:2024/06/05 05:01

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

1、       须要哪些jar文件

技术分享

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

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

2、  官网:www.fhadmin.org     演示样例说明怎样通过java调用转换

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

技术分享

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

技术分享

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

技术分享

演示样例代码例如以下官网:www.fhadmin.org :

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);   }}