java调用kettle批量执行
生活随笔
收集整理的這篇文章主要介紹了
java调用kettle批量执行
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
java調(diào)用kettle批量執(zhí)行
之前只做了一個(gè)java調(diào)用單一ktr的例子,在用web程序控制ETL數(shù)據(jù)抽取過(guò)程的時(shí)候,難免會(huì)遇到要執(zhí)行一個(gè)復(fù)選框列表的ktr,那么前段傳過(guò)來(lái)的就不僅僅是一個(gè)ktr;那就是一個(gè)未知數(shù)目的ktr列表了,思想就是封裝:遍歷:賦值:執(zhí)行;
1 package kettle; 2 3 //需要導(dǎo)入的包 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調(diào)用本地的tran并且傳遞參數(shù)(包括給SQL傳參) 12 */ 13 14 public static void main(String arg[]) throws Exception 15 { 16 /*前臺(tái)頁(yè)面?zhèn)鬟f的參數(shù)*/ 17 String idname="7";//參數(shù)值 18 String filename1="./test1.ktr";//ktr路徑 19 String filename2="./test2.ktr";//ktr路徑 20 KettleEnvironment.init();//初始化kettle環(huán)境 21 /*定義文件路徑,模型元數(shù)據(jù),模型三個(gè)容器*/ 22 ArrayList<String> list1=new ArrayList<String>(); 23 ArrayList<TransMeta> list2=new ArrayList<TransMeta>(); 24 ArrayList<Trans> list3=new ArrayList<Trans>(); 25 /*添加文件對(duì)象*/ 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 /*遍歷文件對(duì)象,創(chuàng)建轉(zhuǎn)換元數(shù)據(jù)對(duì)象*/ 31 for(int i=0;i<list1.size();i++) 32 { 33 TransMeta transMeta = new TransMeta(list1.get(i));//new tran的源數(shù)據(jù)對(duì)象 34 list2.add(transMeta); 35 } 36 /*遍歷轉(zhuǎn)換元數(shù)據(jù)對(duì)象,創(chuàng)建轉(zhuǎn)換對(duì)象*/ 37 for(int j=0;j<list2.size();j++) 38 { 39 Trans trans = new Trans(list2.get(j));//創(chuàng)建tran對(duì)象 40 list3.add(trans); 41 } 42 /*遍歷轉(zhuǎn)換對(duì)象,執(zhí)行列表轉(zhuǎn)換*/ 43 for(int h=0;h<list3.size();h++) 44 { 45 Trans trans =list3.get(h);//創(chuàng)建tran對(duì)象 46 trans.setVariable("idname",idname);//傳參給對(duì)象 47 trans.prepareExecution(null);//異常處理 48 trans.startThreads();//開(kāi)始執(zhí)行 49 trans.waitUntilFinished();//等待執(zhí)行完畢 50 51 if(trans.getErrors()!=0) 52 { 53 System.err.println("Error encountered!"); 54 } 55 else 56 { 57 System.out.println("Success"); 58 } 59 60 } 61 62 63 64 65 66 67 } 68 69 }?
posted on 2013-05-30 14:22 kingstudy 閱讀(...) 評(píng)論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/wxjnew/archive/2013/05/30/3108104.html
總結(jié)
以上是生活随笔為你收集整理的java调用kettle批量执行的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Help View修复
- 下一篇: hdu 4502 一维dp