一、准备工作
1、jdk必须是1.8以上。 2、创建好的Kettle的作业和转换文件二、使用步骤
1.引入Jar包
2.创建工具类
代码如下(示例):
package test;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.util.EnvUtil;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
/**
* Kettle工具类
* @author ZJW
*
*/
public class KettleTrans {
public static void main(String[] args) {
String fileName="E:\\Kettle_Job\\copy_two_table\\two_to_one.ktr";
callKettleTransformation(fileName);
}
/**
* 调用Kettle作业
* @param jobFileName
*/
public static boolean callKettleJob(String jobFileName){
try{
// 初始化
KettleEnvironment.init();
// 配置工作文件路径
JobMeta jobMeta = new JobMeta(jobFileName,null);
Job job = new Job(null,jobMeta);
// 调用工作文件
job.start();
// 刷新
job.waitUntilFinished();
if(job.getErrors()>0){
System.err.println("kettle作业工作文件异常,请校正后重新调用");
return false;
}else{
System.err.println("-----------------------kettle作业工作文件执行成功!-----------------------");
return true;
}
}catch (Exception e) {
e.printStackTrace();
System.err.println("Kettle作业工作执行失败。");
return false;
}
}
/**
* 调用Kettle转换
* @param jobFileName
*/
public static boolean callKettleTransformation(String jobFileName){
try{
// 初始化
KettleEnvironment.init();
EnvUtil.environmentInit();
// 配置工作文件路径
TransMeta transMeta = new TransMeta(jobFileName);
Trans transformation =new Trans(transMeta);
// 调用工作文件
transformation.execute(null);
// 刷新
transformation.waitUntilFinished();
if(transformation.getErrors()>0){
System.err.println("kettle转换工作文件异常,请校正后重新调用");
return false;
}else{
System.err.println("-----------------------kettle转换工作文件执行成功!-----------------------");
return true;
}
}catch (Exception e) {
e.printStackTrace();
System.err.println("Kettle转换工作执行失败。");
return false;
}
}
}
三、可能出现的问题
1、缺Jar包,在Kettle的lib目录下找即可,如果不知道是哪个jar包,可自行百度。
2、jdk版本过低
更换JDK1.8以上的版本。
总结
个人总结,不喜勿喷。欢迎大佬指导。