前提:本人属于初学者,kettle与java的集成正在学习,本文着重说的是java调用本地的ktr并且传参,而不是调用数据库类型的资源库中的ktr.
part1:java部分
project目录如下
需要注意的是:
1:注意所需要的包,大多部分的包在kettle目录下面就有。
2:ktr设计中可能设计多种数据源,驱动包都要有,比如上面的jtds,ojdbc.
3:根据提示也可以选择性的导入js-1.7R1(开发过程中报了一个not found js类的) 下面的两个activation,mail是报了mail的错误,所以导入。
View Code
1 package kettle; 2 //需要导入的包 3 import org.pentaho.di.core.KettleEnvironment; 4 import org.pentaho.di.trans.Trans; 5 import org.pentaho.di.trans.TransMeta; 6 public class ExecuteLocalTran { 7 /** 8 * java调用本地的tran并且传递参数 9 * 10 * 11 */ 12 public static void main(String arg[]) throws Exception 13 { 14 String idname="5";//作为参数值 15 String filename="./test.ktr";//ktr路径 16 KettleEnvironment.init();//初始化kettle环境 17 TransMeta transMeta = new TransMeta(filename);//new tran的源数据对象 18 Trans trans = new Trans(transMeta);//创建tran对象 19 trans.setVariable("namevalue",idname);//给对象传参 20 trans.prepareExecution(null);//异常处理 21 trans.startThreads();//开始执行 22 trans.waitUntilFinished();//等待执行完毕 23 if(trans.getErrors()!=0) 24 { 25 System.out.println("Error encountered!"); 26 } 27 } 28 29 }
part2:ktr部分
需要注意的地方:1:参数引用格式${java程序中指定的参数名} PS: trans.setVariable("namevalue",idname);//给对象传参
2:一定要勾选”替换sql语句中的变量“
英文名:kingwang
& Email :kingstudy@vip.qq.com