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”替换为空;
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">
演示样例代码例如以下:
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转换文件的更多相关文章
- java中调用dll文件的两种方法
一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676 JNativ ...
- autoit 处理文件上传弹出框,并在JAVA中调用
Java 代码 //定义exe 文件存放的绝对路径 File file2 = new File("."); String command = file2.getCanonical ...
- python爬虫简单实现,并在java中调用python脚本,将数据保存在json文件中
# coding:utf-8 import urllib2 from bs4 import BeautifulSoup import json import sys reload(sys) sys.s ...
- 在Java中调用Python
写在前面 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢.当然,之所以要面对这个问题,或许是因为一些历史原因,或者仅仅是为了简单.恰好我在项目中就遇到了这个问题 ...
- Java中调用MatLab返回值
当在Java中使用MatLab函数时,由于语言语法的不同,Matlab返回多个数据时,想在Java中获取到并进行使用.查阅了网上资料,翻箱倒柜加上自己实战,得出方法如下: 如MatLab函数返回的是N ...
- 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 ...
- java中调用js脚本
JDK1.6加入了对Script(JSR223)的支持.这是一个脚本框架,提供了让脚本语言来访问Java内部的方法.你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本.这个脚本API允许你为脚 ...
- 如何在Java中调用Python代码
有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调 ...
- JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构
一.简介 JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构 二.依赖 <!-- https://mvnrepository.com/artifact/org.fus ...
随机推荐
- php elasticsearch 关键词搜索配置
CURL接口方式调用数据,网络搜索了一下大都不能使用,自己研究了一下. 参数格式按照如下传递: PHP: 'query' => [ "bool" => [ " ...
- 苹果Itools
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha
- ASP.NET总结——更改后
这篇重新整理的总结,我做了很久,也在草稿箱中放了很久,一直感觉没有达到和老师谈话后的水平,感觉还是需要增加一些修改,希望读者能提出宝贵意见.既这篇博客之前,我发表了一篇ASP.net的总结,在结构上, ...
- BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(贪心)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3399 [题目大意] 将一个集合调整成另一个集合中的数,把一个数+1需要消耗x,-1需要 ...
- 【模拟退火】poj2420 A Star not a Tree?
题意:求平面上一个点,使其到给定的n个点的距离和最小,即费马点. 模拟退火的思想是随机移动,然后100%接受更优解,以一定概率接受更劣解.移动的过程中温度缓慢降低,接受更劣解的概率降低. 在网上看到的 ...
- 【SAM】POJ1509-Glass Beads
[题目大意] 求一个循环数列的最小表示法. [思路] 把原创复制一遍放在后面,建立SAM,从s按字典序开始跑长度L即可. 板子来源(作者见连接内):
- Problem F: 逆序排列
#include<stdio.h> void sort(int *p,int n) { int i,t; ;i<n/;i++) { t=*(p+i); *(p+i)=*(p+n-i- ...
- Codeforces Round #344 (Div. 2) E. Product Sum 维护凸壳
E. Product Sum 题目连接: http://www.codeforces.com/contest/631/problem/E Description Blake is the boss o ...
- MYSQL复习笔记1-物理文件和系统架构
date:20140101auth:Jin 一.物理组成(一) 日志文件参考:http://dev.mysql.com/doc/refman/5.1/en/server-logs.html1.错误日志 ...
- web安全开发指南--权限管理
2.1 访问控制安全规则 1 访问控制必须只能在服务器端执行. 2 只通过session来判定用户的真实身份,避免使用其它数据域的参数(比如来自cookie.hidden域 ...