java如何調用kettle設置變量和參數(shù)
更新時間:2025年01月02日 08:53:49 作者:千里草竹
文章簡要介紹了如何在Java中調用Kettle,并重點討論了變量和參數(shù)的區(qū)別,以及在Java代碼中如何正確設置和使用這些變量,避免覆蓋Kettle中已設置的變量,作者分享了個人經驗,并鼓勵大家參考和使用腳本之家
java調用kettle設置變量和參數(shù)
java調用kettle,變量和參數(shù)的設置方式


java代碼中變量會覆蓋kettle里面設置的變量
需要注意:
變量和參數(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ù)
jobMeta.setParameterValue("sql_file", "d://12");
jobMeta.setParameterValue("sql_file_para", "java中參數(shù)");
job.setLogLevel(LogLevel.DEBUG);
// 設置變量 java代碼中變量會覆蓋kettle里面設置的變量
job.setVariable("sql_file", "d://13");
// 啟動執(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("實例化kettle資源庫");
}
}
/**
* 設置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中已經設置了,不明白此處為何還要再次設置
repository.connect("admin", "admin");
return repository;
} catch (KettleException e) {
e.printStackTrace();
logger.error("kettle資源庫連接失敗");
}
return null;
}
}
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
spring 中事務注解@Transactional與trycatch的使用
這篇文章主要介紹了spring 中事務注解@Transactional與trycatch的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
AbstractQueuedSynchronizer內部類Node使用講解
這篇文章主要為大家介紹了AbstractQueuedSynchronizer內部類Node使用講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
MyBatis的JdbcType與Oracle、MySql數(shù)據(jù)類型一覽表
這篇文章主要介紹了MyBatis的JdbcType與Oracle、MySql數(shù)據(jù)類型一覽表,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
詳解SpringMVC的攔截器鏈實現(xiàn)及攔截器鏈配置
攔截器(Interceptor)是一種動態(tài)攔截方法調用的機制,在SpringMVC中動態(tài)攔截控制器方法的執(zhí)行。本文將詳細講講SpringMVC中攔截器參數(shù)及攔截器鏈配置,感興趣的可以嘗試一下2022-08-08

