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"); } }
可以將轉換文件存儲到資源庫,通過程序進行調用。