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<String> list1=new ArrayList<String>();
23        ArrayList<TransMeta> list2=new ArrayList<TransMeta>();
24        ArrayList<Trans> list3=new ArrayList<Trans>();
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;i<list1.size();i++)
32        {
33        TransMeta transMeta = new TransMeta(list1.get(i));//new tran的源數據對象
34        list2.add(transMeta);
35        }
36        /*遍歷轉換元數據對象,創建轉換對象*/
37        for(int j=0;j<list2.size();j++)
38        {
39        Trans trans = new Trans(list2.get(j));//創建tran對象
40        list3.add(trans);
41        }
42        /*遍歷轉換對象,執行列表轉換*/
43        for(int h=0;h<list3.size();h++)
44        {
45            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!"); 
54            }
55            else
56            {
57            System.out.println("Success");
58            }
59        
60        }
61        
62        
63        
64        
65        
66       
67     }
68 
69 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM