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;
	}
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • spring 中事务注解@Transactional与trycatch的使用

    spring 中事务注解@Transactional与trycatch的使用

    这篇文章主要介绍了spring 中事务注解@Transactional与trycatch的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 深入理解Java中的Lambda表达式

    深入理解Java中的Lambda表达式

    这篇文章主要介绍了深入理解Java中的Lambda表达式,Lambda在各编程语言中都是非常重要的特性,而Java中则加入得有些太晚...需要的朋友可以参考下
    2015-07-07
  • Java实现锁定某个变量的几种方式示例详解

    Java实现锁定某个变量的几种方式示例详解

    这篇文章主要为大家介绍了Java实现锁某个变量的几种方式示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • AbstractQueuedSynchronizer内部类Node使用讲解

    AbstractQueuedSynchronizer内部类Node使用讲解

    这篇文章主要为大家介绍了AbstractQueuedSynchronizer内部类Node使用讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Spring Boot 自动配置之条件注解浅析

    Spring Boot 自动配置之条件注解浅析

    这篇文章主要介绍了Spring Boot 自动配置之条件注解浅析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • Java学习之Lambda表达式的使用详解

    Java学习之Lambda表达式的使用详解

    Lambda表达式是Java SE 8中一个重要的新特性,允许通过表达式来代替功能接口。本文将通过一些简单的示例和大家讲讲Lamda表达式的使用,感兴趣的可以了解一下
    2022-12-12
  • Mybatis控制台打印SQL执行信息的方法详解

    Mybatis控制台打印SQL执行信息的方法详解

    SQL性能监控是一个程序必要的功能,通常我们可以使用数据库自带的客户端工具进行SQL性能分析,本章节只实现Mybatis执行时对执行SQL进行拦截,控制台打印执行SQL包括参数、执行方法以及执行时间,需要的朋友可以参考下
    2024-11-11
  • SpringMVC请求流程源码解析

    SpringMVC请求流程源码解析

    这篇文章主要介绍了SpringMVC请求流程源码分析,包括springmvc使用,SpringMVC启动过程及SpringMVC请求过程,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • MyBatis的JdbcType与Oracle、MySql数据类型一览表

    MyBatis的JdbcType与Oracle、MySql数据类型一览表

    这篇文章主要介绍了MyBatis的JdbcType与Oracle、MySql数据类型一览表,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 详解SpringMVC的拦截器链实现及拦截器链配置

    详解SpringMVC的拦截器链实现及拦截器链配置

    拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行。本文将详细讲讲SpringMVC中拦截器参数及拦截器链配置,感兴趣的可以尝试一下
    2022-08-08

最新评论