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”替换为空;

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmV3ZWFzdHN1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmV3ZWFzdHN1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

演示样例代码例如以下:

  1. publicclass KettleUtil2 {
  2.  
  3. public String RES_DIR = "res";
  4.  
  5. private String fullFileName ;
  6.  
  7. public KettleUtil2(String fileName){
  8.  
  9. fullFileName = System.getProperty("user.dir") + File.separator + RES_DIR;
  10.  
  11. fullFileName += File.separator + fileName;
  12.  
  13. }
  14.  
  15. /**
  16.  
  17. * 没有參数是,设置參数为null
  18.  
  19. * @param paras
  20.  
  21. */
  22.  
  23. publicvoid runTransformation(Map<String,String> paras) {
  24.  
  25. try {
  26.  
  27. KettleEnvironment.init();
  28.  
  29. TransMeta transMeta = new TransMeta(fullFileName);
  30.  
  31. Trans transformation =new Trans(transMeta);
  32.  
  33. for(Map.Entry<String, String> entry: paras.entrySet()) {
  34.  
  35. transformation.setParameterValue(entry.getKey(), entry.getValue());
  36.  
  37. }
  38.  
  39. transformation.execute(null);
  40.  
  41. transformation.waitUntilFinished();
  42.  
  43. if (transformation.getErrors() > 0) {
  44.  
  45. thrownew RuntimeException(
  46.  
  47. "There wereerrors during transformation execution.");
  48.  
  49. }
  50.  
  51. } catch (KettleException e) {
  52.  
  53. System.out.println(e);
  54.  
  55. }
  56.  
  57. }
  58.  
  59. }

最后调用代码例如以下:

  1. publicclass EtlTest {
  2.  
  3. publicstaticvoid main(String[] args) {
  4.  
  5. KettleUtil2 etl = new KettleUtil2("testimport.ktr");
  6.  
  7. Map<String,String> para = new HashMap<String,String>();
  8.  
  9. //给转换中命名參数赋值
  10.  
  11. para.put("XlsName", "data");
  12.  
  13. etl.runTransformation(para);
  14.  
  15. }
  16.  
  17. }

java中调用kettle转换文件的更多相关文章

  1. java中调用dll文件的两种方法

    一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676   JNativ ...

  2. autoit 处理文件上传弹出框,并在JAVA中调用

    Java  代码 //定义exe 文件存放的绝对路径 File file2 = new File("."); String command = file2.getCanonical ...

  3. python爬虫简单实现,并在java中调用python脚本,将数据保存在json文件中

    # coding:utf-8 import urllib2 from bs4 import BeautifulSoup import json import sys reload(sys) sys.s ...

  4. 在Java中调用Python

    写在前面 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢.当然,之所以要面对这个问题,或许是因为一些历史原因,或者仅仅是为了简单.恰好我在项目中就遇到了这个问题 ...

  5. Java中调用MatLab返回值

    当在Java中使用MatLab函数时,由于语言语法的不同,Matlab返回多个数据时,想在Java中获取到并进行使用.查阅了网上资料,翻箱倒柜加上自己实战,得出方法如下: 如MatLab函数返回的是N ...

  6. Java中调用c/c++语言出现Exception in thread "main" java.lang.UnsatisfiedLinkError: Test.testPrint(Ljava/lang/String;)V...错误

    错误: Exception in thread "main" java.lang.UnsatisfiedLinkError: Test.testPrint(Ljava/lang/S ...

  7. java中调用js脚本

    JDK1.6加入了对Script(JSR223)的支持.这是一个脚本框架,提供了让脚本语言来访问Java内部的方法.你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本.这个脚本API允许你为脚 ...

  8. 如何在Java中调用Python代码

    有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调 ...

  9. JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构

    一.简介 JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构 二.依赖 <!-- https://mvnrepository.com/artifact/org.fus ...

随机推荐

  1. Openstack 网络服务 Neutron计算节点部署 (十一)

    一) Neutron计算节点部署 1.安装软件包 # yum install -y openstack-neutron-linuxbridge ebtables ipset 2.配置文件neutron ...

  2. Python进程间通信:Queue

    Python进程间通信Queue 1.Queue使用方法: Queue.qsize():返回当前队列包含的消息数量: Queue.empty():如果队列为空,返回True,反之False : Que ...

  3. cogs 2039. 树的统计

    2039. 树的统计 ★★   输入文件:counttree.in   输出文件:counttree.out   简单对比时间限制:1 s   内存限制:128 MB [题目描述] 关于树的统计问题有 ...

  4. 「LGR-049」洛谷7月月赛 D.Beautiful Pair

    「LGR-049」洛谷7月月赛 D.Beautiful Pair 题目大意 : 给出长度为 \(n\) 的序列,求满足 \(i \leq j\) 且 $a_i \times a_j \leq \max ...

  5. 【构造】Gym - 100781B - Bell Ringing

    根据n-1推n的情况,让n从每一个的最右走到最左,再从下一个最左走到最右,如此往复即可. #include<cstdio> using namespace std; int n,a[500 ...

  6. 探究Activity(1)--Activity的基本用法

    一.Activity是什么 Activity(活动)是最容易吸引用户的地方,它是一种可以包含用户界面的组件,主要用于和用户进行交互.一个应用程序中应该包括零个或多个Activity. 二.Activi ...

  7. bootstrap学习(全局CSS样式)(二)

    标题类:.h1到.h6 页面主体 bootstrap将全局font-size设置为14px,line-height设置为1.428,这些属性 直接赋予元素和所有段落元素. 文本对齐类 text-lef ...

  8. 在WPF中使用FontAwesome之类的字体图标

    我之前在博客中介绍过几个矢量图库网站,在WPF程序中,一般接触到的矢量图标资源有XAML.SVG.字体这三种格式.XAML是标准格式就不说了,SVG并不是直接支持的,不过微软提供了Expression ...

  9. TWinHTTP

    TWinHTTP USES SynCrtSock procedure hget(const url: string; var ResponseCode: Integer; var ResponseHe ...

  10. JSON Bean 相互转换工具(效率是Gson的两倍以上)

    本帖最后由 xuehuayous 于 2015-12-24 08:44 编辑 前几天想封装一个自定义控件,用到Json解析,以前都使用Gson来解析Json数据的,但是想到一个简单的自定义控件就没必要 ...