隨筆-200  評論-148  文章-15  trackbacks-0
          轉自

          http://blog.csdn.net/chen978616649/article/details/9063695


          代碼如下:調用kettle 4.2版本


          package test;


          import org.apache.commons.lang.StringUtils;
          import org.apache.commons.vfs.FileSelector;
          import org.pentaho.di.core.KettleEnvironment;
          import org.pentaho.di.core.database.DatabaseMeta;
          import org.pentaho.di.core.exception.KettleException;
          import org.pentaho.di.core.util.EnvUtil;
          import org.pentaho.di.job.Job;
          import org.pentaho.di.job.JobMeta;
          import org.pentaho.di.repository.RepositoryDirectory;
          import org.pentaho.di.repository.RepositoryDirectoryInterface;
          import org.pentaho.di.repository.kdr.KettleDatabaseRepository;
          import org.pentaho.di.repository.kdr.KettleDatabaseRepositoryMeta;
          import org.pentaho.di.trans.Trans;
          import org.pentaho.di.trans.TransMeta;


          import com.longtech.configuration.BaseConfiguration;
          import com.platform.common.util.LoggerUtil;


          /**
           * 
           * @Description:  java調用kettle 數據庫型資料庫中的轉換
           * @author chen 此類是調用kettle 4.2版本的測試類
           * @version 1.0, 
           * @date 2013-5-23 下午02:40:50
           */
          public class ExecRepositoryTrans {
          /**
          * 本測試類慎用?。。。。。?!
          * @param args
          */
          public static void main(String[] args) {
          //D:\java\workspace\sics\src\config\kettle
          String classesdir = BaseConfiguration.getString("classesdir");
          String jobName = BaseConfiguration.getString("kettle.path.file");
          if(StringUtils.isNotEmpty(jobName)){
          LoggerUtil.info(ExecRepositoryTrans.class, "執行kettle job start-------------------");

          runJob(classesdir + jobName);

          LoggerUtil.info(ExecRepositoryTrans.class, "執行kettle job end -------------------");
          }else{

          LoggerUtil.info(ExecRepositoryTrans.class, "請配置kettle.path.file job 的路徑文件");
          }

          }
          /**
          *java 調用kettle 轉換 
          */
          public static void runTransfer(){
          Trans trans=null;  
          FileSelector f = null;
          try {
          // 初始化  
                      String fName= "D:\\kettle\\informix_to_am_4.ktr";
                      // 轉換元對象  
                  KettleEnvironment.init();//初始化
                  EnvUtil.environmentInit();
                      TransMeta transMeta = new TransMeta(fName);
                      // 轉換  
                      trans = new Trans(transMeta);  
                      // 執行轉換  
                      trans.execute(null);   
                      // 等待轉換執行結束  
                      trans.waitUntilFinished();  
                      //拋出異常  
                      if(trans.getErrors()>0){  
                          throw new Exception("There are errors during transformation exception!(傳輸過程中發生異常)");  
                      }  
          } catch (Exception e) {
          e.printStackTrace();
          }
          }
          /**
          * java 調用 kettle 的job
          * @param jobname 如: String fName= "D:\\kettle\\informix_to_am_4.ktr";
          */
          public static void runJob(String jobname){  
          try {   
          KettleEnvironment.init();   
          //jobname 是Job腳本的路徑及名稱   
          JobMeta jobMeta = new JobMeta(jobname, null);   
          Job job = new Job(null, jobMeta);   
          //向Job 腳本傳遞參數,腳本中獲取參數值:${參數名}   
          //job.setVariable(paraname, paravalue);   
           job.start();   
           job.waitUntilFinished();   
           if (job.getErrors() > 0) {   
           throw new Exception("There are errors during job exception!(執行job發生異常)");  
           }   
          } catch (Exception e) {   
          e.printStackTrace();
          }   
          }
          /**
          * 配置數據源 調用資源庫中的相關job 、transfer
          */
          public static void dbResource(){
          String transName="t1";  
                   
                 try {  
                     KettleEnvironment.init();  
                     DatabaseMeta dataMeta = new DatabaseMeta("KettleDBRep","MSSQL","Native","127.0.0.1","etl","1433","sa","bsoft");  
                     KettleDatabaseRepositoryMeta repInfo = new KettleDatabaseRepositoryMeta();  
                     repInfo.setConnection(dataMeta);  
                     KettleDatabaseRepository rep = new KettleDatabaseRepository();  
                     rep.init(repInfo);  
                     rep.connect("admin", "admin");  
                       
                     RepositoryDirectoryInterface dir = new RepositoryDirectory();  
                     dir.setObjectId(rep.getRootDirectoryID());  
                       
                     TransMeta tranMeta = rep.loadTransformation(rep.getTransformationID(transName, dir), null);  
                     Trans trans = new Trans(tranMeta);  
                     trans.execute(null);  
                     trans.waitUntilFinished();  
                 } catch (KettleException e) {  
                     e.printStackTrace();  
                 }  
          }


          }

          posted on 2014-03-02 08:20 無聲 閱讀(1624) 評論(0)  編輯  收藏 所屬分類: 職場生活
          主站蜘蛛池模板: 阿勒泰市| 天峻县| 德惠市| 电白县| 江口县| 南陵县| 施秉县| 绥芬河市| 西充县| 报价| 绥滨县| 长岛县| 海阳市| 汨罗市| 桑日县| 临洮县| 合山市| 沙洋县| 郸城县| 潜山县| 平湖市| 乌鲁木齐县| 新河县| 思茅市| 赣州市| 五寨县| 大竹县| 清流县| 台江县| 苏州市| 航空| 临武县| 汉阴县| 合肥市| 百色市| 梅河口市| 色达县| 呈贡县| 阳泉市| 长丰县| 唐河县|