(1).將相應的kettle的jar包導入的java項目,主要的jar包有一下幾個。
(2).java程序。
package cn.com.taiji.oosweb.test.web;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.util.EnvUtil;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
public class test {
//public static void main(String[] args) throws IOException {
//
// String basename = "cn.com.taiji.oosweb.test.web.common";
// Locale currentLocale = Locale.getDefault();
//
// Locale cn = Locale.CHINA;//中文
// Locale us = Locale.US;//英文
// ResourceBundle myResourcesCN = ResourceBundle.getBundle(basename,cn);
//
// String usernameCN = myResourcesCN.getString("close");
// System.out.println(usernameCN);
//}
//public void readResources() throws IOException{
// InputStream is = this.getClass().getResourceAsStream("/conf/common.properties");
// System.out.println((char)is.read());
// is.close();
//}
/**
* 本測試類慎用!!!!!!!
*
* @param args
*/
public static void main(String[] args) {
String datetime = "2014-12-19 23:20:45";
String[] params = {"707", datetime}; // 傳遞參數
String path = "C:\\Users\\administor\\Desktop\\kettle\\kettleTest.kjb";
for (int i = 0; i < 3; i++) {
params[0] += i;
runJob(params, path);
}
}
/**
* java 調用 kettle 的job
*
* @param jobname
* 如: String fName= "D:\\kettle\\informix_to_am_4.ktr";
*/
public static void runJob(String[] params, String jobPath) {
try {
KettleEnvironment.init();
// jobname 是Job腳本的路徑及名稱
JobMeta jobMeta = new JobMeta(jobPath, null);
Job job = new Job(null, jobMeta);
// 向Job 腳本傳遞參數,腳本中獲取參數值:${參數名}
// job.setVariable(paraname, paravalue);
job.setVariable("id", params[0]);
System.err.println(params[0]+"=========="+params[1]);
job.setVariable("dt", params[1]);
job.start();
job.waitUntilFinished();
if (job.getErrors() > 0) {
throw new Exception(
"There are errors during job exception!(執行job發生異常)");
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 運行轉換文件方法
* @param params 多個參數變量值
* @param ktrPath 轉換文件的路徑,后綴ktr
*/
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();
}
}
}
(3).kettle的畫法。
1.
2.
3.