Kettle與Java集成——Java代碼調取運行資源庫的Transformation

  1. import org.pentaho.di.core.KettleEnvironment;  
  2. import org.pentaho.di.core.exception.KettleException;  
  3. import org.pentaho.di.repository.filerep.KettleFileRepository;  
  4. import org.pentaho.di.repository.filerep.KettleFileRepositoryMeta;  
  5. import org.pentaho.di.trans.Trans;  
  6. import org.pentaho.di.trans.TransMeta;  
  7. public class ReaderTransFromRep {  
  8.     private static String tranName = "IM_KSDM";    // 傳輸名稱  
  9.     public static void main(String[] args) throws KettleException {  
  10.         Trans trans=null;  
  11.         try {  
  12.             // 初始化  
  13.             KettleEnvironment.init();這個是4.0版本的初始化,和3.x版本的不同  
  14.             // 資源庫元對象  
  15.             KettleFileRepositoryMeta repinfo = new KettleFileRepositoryMeta("","","數據採集","file:///E:/Workspaces/Kettle");  
  16.             // 文件形式的資源庫  
  17.             KettleFileRepository rep = new KettleFileRepository();  
  18.             rep.init(repinfo);  
  19.             // 轉換元對象  
  20.             if(tranName!=null){  
  21.                 TransMeta transMetadel = rep.loadTransformation(rep.getTransformationID(tranName, null), null);  
  22.                 // 轉換  
  23.                 trans = new Trans(transMetadel);  
  24.                 // 執行轉換  
  25.                 trans.execute(null);   
  26.                 // 等待轉換執行結束  
  27.                 trans.waitUntilFinished();  
  28.                 //拋出異常  
  29.                 if(trans.getErrors()>0){  
  30.                     throw new Exception("There are errors during transformation exception!(傳輸過程中發生異常)");  
  31.                 }  
  32.             }else{  
  33.                 throw new KettleException("傳輸名爲空!");  
  34.             }  
  35.         } catch (Exception e) {  
  36.             if(trans!=null){  
  37.                 trans.stopAll();  
  38.             }  
  39.             e.printStackTrace();  
  40.             throw new KettleException(e);  
  41.         }  
  42.     }  
  43.                       }  



 

 

 
 
 

 

(2)數據庫類型資源庫

 

  1. import org.pentaho.di.core.KettleEnvironment;  
  2. import org.pentaho.di.core.database.DatabaseMeta;  
  3. import org.pentaho.di.core.exception.KettleException;  
  4. import org.pentaho.di.repository.RepositoryDirectory;  
  5. import org.pentaho.di.repository.RepositoryDirectoryInterface;  
  6. import org.pentaho.di.repository.kdr.KettleDatabaseRepository;  
  7. import org.pentaho.di.repository.kdr.KettleDatabaseRepositoryMeta;  
  8. import org.pentaho.di.trans.Trans;  
  9. import org.pentaho.di.trans.TransMeta;  
  10.   
  11. public class ReaderTransFromDBRep {  
  12.     private static String transName="t1";  
  13.     public static void main(String[] args) {  
  14.           
  15.         try {  
  16.             KettleEnvironment.init();  
  17.             DatabaseMeta dataMeta = new DatabaseMeta("KettleDBRep","MSSQL","Native","127.0.0.1","etl","1433","sa","bsoft");  
  18.             KettleDatabaseRepositoryMeta repInfo = new KettleDatabaseRepositoryMeta();  
  19.             repInfo.setConnection(dataMeta);  
  20.             KettleDatabaseRepository rep = new KettleDatabaseRepository();  
  21.             rep.init(repInfo);  
  22.             rep.connect("admin""admin");  
  23.               
  24.             RepositoryDirectoryInterface dir = new RepositoryDirectory();  
  25.             dir.setObjectId(rep.getRootDirectoryID());  
  26.               
  27.             TransMeta tranMeta = rep.loadTransformation(rep.getTransformationID(transName, dir), null);  
  28.             Trans trans = new Trans(tranMeta);  
  29.             trans.execute(null);  
  30.             trans.waitUntilFinished();  
  31.         } catch (KettleException e) {  
  32.             e.printStackTrace();  
  33.         }  
  34.     }  
  35. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章