java如何調(diào)用kettle設(shè)置變量和參數(shù)
java調(diào)用kettle設(shè)置變量和參數(shù)
java調(diào)用kettle,變量和參數(shù)的設(shè)置方式


java代碼中變量會(huì)覆蓋kettle里面設(shè)置的變量
需要注意:
變量和參數(shù) 他倆是不一樣的
public class JobMail {
public static void main(String[] args) throws KettleException {
KettleDatabaseRepository repository = KettleUtils.kettleDbRepository;
String job_path = "/201811_JOB";
String job_name = "A_郵件job_para";
execJob(repository, job_path, job_name);
}
/**
* 執(zhí)行 JOB
*
* @param repository
* kettle數(shù)據(jù)庫資源庫
* @param job_path
* JOB 目錄
* @param job_name
* JOB 名稱
* @throws KettleException
*/
private static void execJob(KettleDatabaseRepository repository, String job_path, String job_name) throws KettleException {
RepositoryDirectoryInterface dir = repository.findDirectory(job_path);
JobMeta jobMeta = repository.loadJob(repository.getJobId(job_name, dir), null);
Job job = new Job(repository, jobMeta);
// 設(shè)置參數(shù)
jobMeta.setParameterValue("sql_file", "d://12");
jobMeta.setParameterValue("sql_file_para", "java中參數(shù)");
job.setLogLevel(LogLevel.DEBUG);
// 設(shè)置變量 java代碼中變量會(huì)覆蓋kettle里面設(shè)置的變量
job.setVariable("sql_file", "d://13");
// 啟動(dòng)執(zhí)行指定的job
job.start();
job.waitUntilFinished();// 等待job執(zhí)行完;
job.setFinished(true);
System.out.println(job.getResult());
}
}
public class KettleUtils {
private static Logger logger = Logger.getLogger(KettleUtils.class);
private KettleUtils() throws Exception {
throw new Exception("工具類不允許創(chuàng)建");
}
/**
* kettle 資源庫
*/
public static KettleDatabaseRepository kettleDbRepository;
static {
if (kettleDbRepository == null) {
kettleDbRepository = getKettleDatabaseRepository();
logger.info("實(shí)例化kettle資源庫");
}
}
/**
* 設(shè)置kettle資源庫連接信息
*
* @return
*/
public static DatabaseMeta setDatabaseMeta() {
return new DatabaseMeta(PropUtils.getConfigValByKey("name"), PropUtils.getConfigValByKey("type"), PropUtils.getConfigValByKey("access"), PropUtils.getConfigValByKey("host"), PropUtils.getConfigValByKey("db"), PropUtils.getConfigValByKey("port"), PropUtils.getConfigValByKey("user"), PropUtils.getConfigValByKey("pass"));
}
/**
* kettle 資源庫 獲取
*
* @return
*/
private static KettleDatabaseRepository getKettleDatabaseRepository() {
try {
KettleEnvironment.init();
// 創(chuàng)建DB資源庫
KettleDatabaseRepository repository = new KettleDatabaseRepository();
DatabaseMeta databaseMeta = KettleUtils.setDatabaseMeta();
// 選擇資源庫 此處參我與本地不一致還是正確執(zhí)行
KettleDatabaseRepositoryMeta kettleDatabaseRepositoryMeta = new KettleDatabaseRepositoryMeta("Kettle", "Kettle", "Transformation description", databaseMeta);
repository.init(kettleDatabaseRepositoryMeta);
// 連接資源庫 DatabaseMeta中已經(jīng)設(shè)置了,不明白此處為何還要再次設(shè)置
repository.connect("admin", "admin");
return repository;
} catch (KettleException e) {
e.printStackTrace();
logger.error("kettle資源庫連接失敗");
}
return null;
}
}
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
為什么禁止在SpringBoot項(xiàng)目中使用@Autowired注解
寫代碼的時(shí)候突然發(fā)現(xiàn)?idea?在屬性注入的?@Autowired?注解上給出警告提示,spring?framework?4.0?以后開始出現(xiàn)的,spring?4.0?開始就不推薦使用屬性注入,改為推薦構(gòu)造器注入和?setter?注入,推薦的方法是使用基于構(gòu)造函數(shù)和基于setter的依賴注入2024-08-08
springboot項(xiàng)目中jacoco服務(wù)端部署使用
這篇文章主要為大家介紹了springboot項(xiàng)目中jacoco服務(wù)端部署使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
Java 內(nèi)置接口 Serializable示例詳解
這篇文章主要為大家介紹了Java 內(nèi)置接口 Serializable示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
java如何根據(jù)IP獲取當(dāng)前區(qū)域天氣信息詳解
根據(jù)IP自動(dòng)獲取當(dāng)?shù)氐奶鞖忸A(yù)報(bào)信息這個(gè)功能大家應(yīng)該都遇到過,天氣預(yù)報(bào)信息用途非常廣泛,篇文章主要給大家介紹了關(guān)于java如何根據(jù)IP獲取當(dāng)前區(qū)域天氣信息的相關(guān)資料,需要的朋友可以參考下2021-08-08
Spring?MVC中的Controller進(jìn)行單元測試的實(shí)現(xiàn)
本文主要介紹了如何對(duì)Spring?MVC中的Controller進(jìn)行單元測試的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
java網(wǎng)絡(luò)之基于UDP的聊天程序示例解析
這篇文章主要介紹了java網(wǎng)絡(luò)之基于UDP的聊天程序示例解析,文中通過步驟及示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
詳解rabbitmq使用springboot實(shí)現(xiàn)fanout模式
這篇文章主要介紹了rabbitmq使用springboot實(shí)現(xiàn)fanout模式,Fanout特點(diǎn)是發(fā)布與訂閱模式,是一種廣播機(jī)制,它是沒有路由key的模式,需要的朋友可以參考下2023-07-07

