kettle 使用JAVA代碼進行執行


kettle 設計完成之后,可以在設計工具中進行調用,也可以使用java代碼進行調用。

 

1.通過文件方式執行轉換。

public static void runTransfer(String[] params, String ktrPath) {  
        Trans trans = null;  
        try {  
            // // 初始化  
            // 轉換元對象  
            KettleEnvironment.init();// 初始化  
            EnvUtil.environmentInit();  
            TransMeta transMeta = new TransMeta(ktrPath);  
            // 轉換  
            trans = new Trans(transMeta);  
              
            // 執行轉換  
            trans.execute(params);  
            // 等待轉換執行結束  
            trans.waitUntilFinished();  
            // 拋出異常  
            if (trans.getErrors() > 0) {  
                throw new Exception(  
                        "There are errors during transformation exception!(傳輸過程中發生異常)");  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  

 

2.通過文件方式執行job

public static void runJob(Map<String,String> maps, String jobPath) {  
        try {  
            KettleEnvironment.init();  
            // jobname 是Job腳本的路徑及名稱  
            JobMeta jobMeta = new JobMeta(jobPath, null);  
            Job job = new Job(null, jobMeta);  
            // 向Job 腳本傳遞參數,腳本中獲取參數值:${參數名}  
            // job.setVariable(paraname, paravalue);  
            Set<Entry<String, String>> set=maps.entrySet(); 
            for(Iterator<Entry<String, String>> it=set.iterator();it.hasNext();){ 
                Entry<String, String> ent=it.next(); 
                job.setVariable(ent.getKey(), ent.getValue());  
            } 
            job.start();  
            job.waitUntilFinished();  
            if (job.getErrors() > 0) {  
                throw new Exception(  
                        "There are errors during job exception!(執行job發生異常)");  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  

 

3.執行資源庫的中的轉換。

public static void runWithDb() throws KettleException{ 
        KettleEnvironment.init(); 
        //創建DB資源庫 
        KettleDatabaseRepository repository=new KettleDatabaseRepository(); 
        DatabaseMeta databaseMeta=new DatabaseMeta("kettle","mysql","jdbc","localhost","kettle","3306","root","root"); 
        //選擇資源庫 
        KettleDatabaseRepositoryMeta kettleDatabaseRepositoryMeta=new KettleDatabaseRepositoryMeta("kettle","kettle","Transformation description",databaseMeta); 
        repository.init(kettleDatabaseRepositoryMeta); 
        //連接資源庫 
        repository.connect("admin","admin"); 
        RepositoryDirectoryInterface directoryInterface=repository.loadRepositoryDirectoryTree(); 
        //選擇轉換 
        TransMeta transMeta=repository.loadTransformation("demo1",directoryInterface,null,true,null); 
        Trans trans=new Trans(transMeta); 
        trans.execute(null); 
        trans.waitUntilFinished();//等待直到數據結束 
        if(trans.getErrors()>0){ 
            System.out.println("transformation error"); 
        }else{ 
            System.out.println("transformation successfully"); 
        } 
   } 

 

可以將轉換文件存儲到資源庫,通過程序進行調用。


免責聲明!

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



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