您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页java调用kettle批量执行

java调用kettle批量执行

来源:筏尚旅游网
java调⽤kettle批量执⾏

之前只做了⼀个java调⽤单⼀ktr的例⼦,在⽤web程序控制ETL数据抽取过程的时候,难免会遇到要执⾏⼀个复选框列表的ktr,那么前段传过来的就不仅仅是⼀个ktr;那就是⼀个未知数⽬的ktr列表了,思想就是封装:遍历:赋值:执⾏;

1 package kettle; 2

3 //需要导⼊的包 4

5 import java.util.ArrayList;

6 import org.pentaho.di.core.KettleEnvironment; 7 import org.pentaho.di.trans.TransMeta; 8 import org.pentaho.di.trans.Trans; 9 public class ExecuteBatchLocalTran {10 /**

11 * java调⽤本地的tran并且传递参数(包括给SQL传参)12 */13

14 public static void main(String arg[]) throws Exception 15 {

16 /*前台页⾯传递的参数*/17 String idname=\"7\";//参数值

18 String filename1=\"./test1.ktr\";//ktr路径19 String filename2=\"./test2.ktr\";//ktr路径20 KettleEnvironment.init();//初始化kettle环境21 /*定义⽂件路径,模型元数据,模型三个容器*/22 ArrayList list1=new ArrayList();

23 ArrayList list2=new ArrayList();24 ArrayList list3=new ArrayList();25 /*添加⽂件对象*/26 list1.add(filename1);27 list1.add(filename2);

28 //System.out.print(\"=======================1:\"+list1.get(0));29 //System.out.print(\"=======================2:\"+list1.get(1));30 /*遍历⽂件对象,创建转换元数据对象*/31 for(int i=0;i33 TransMeta transMeta = new TransMeta(list1.get(i));//new tran的源数据对象34 list2.add(transMeta);35 }

36 /*遍历转换元数据对象,创建转换对象*/37 for(int j=0;j39 Trans trans = new Trans(list2.get(j));//创建tran对象40 list3.add(trans);41 }

42 /*遍历转换对象,执⾏列表转换*/43 for(int h=0;h45 Trans trans =list3.get(h);//创建tran对象

46 trans.setVariable(\"idname\",idname);//传参给对象47 trans.prepareExecution(null);//异常处理48 trans.startThreads();//开始执⾏

49 trans.waitUntilFinished();//等待执⾏完毕50

51 if(trans.getErrors()!=0)52 {

53 System.err.println(\"Error encountered!\"); }55 else56 {

57 System.out.println(\"Success\");58 }59 60 }61 62 63 65 66 67 }68 69 }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务