java如何调用kettle设置变量和参数
更新时间:2025年01月02日 08:53:49 作者:千里草竹
文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置的变量,作者分享了个人经验,并鼓励大家参考和使用脚本之家
java调用kettle设置变量和参数
java调用kettle,变量和参数的设置方式
java代码中变量会覆盖kettle里面设置的变量
需要注意:
变量和参数 他俩是不一样的
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); } /** * 执行 JOB * * @param repository * kettle数据库资源库 * @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); // 设置参数 jobMeta.setParameterValue("sql_file", "d://12"); jobMeta.setParameterValue("sql_file_para", "java中参数"); job.setLogLevel(LogLevel.DEBUG); // 设置变量 java代码中变量会覆盖kettle里面设置的变量 job.setVariable("sql_file", "d://13"); // 启动执行指定的job job.start(); job.waitUntilFinished();// 等待job执行完; 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("工具类不允许创建"); } /** * 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(); // 创建DB资源库 KettleDatabaseRepository repository = new KettleDatabaseRepository(); DatabaseMeta databaseMeta = KettleUtils.setDatabaseMeta(); // 选择资源库 此处参我与本地不一致还是正确执行 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; } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
java如何通过FileOutputStream字节流向文件中写数据
这篇文章主要介绍了java如何通过FileOutputStream字节流向文件中写数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-12-12详解SpringBoot中JdbcTemplate的事务控制
JdbcTemplate是spring-jdbc提供的数据库核心操作类,那对JdbcTemplate进行事务控制呢,本文就详细的介绍一下2021-09-09SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解
这篇文章主要介绍了SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-08-08
最新评论