`

Java kettle程序执行 kettle文件

 
阅读更多
Java执行本地ktr文件和kjb文件

package com.cmbchina.mms.comm.kettle;

import java.io.File;

import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.util.EnvUtil;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.repository.RepositoryDirectoryInterface;
import org.pentaho.di.repository.kdr.KettleDatabaseRepository;
import org.pentaho.di.repository.kdr.KettleDatabaseRepositoryMeta;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;


/**
 * @author:
 * @TODO:Jave调用Kettle案例
 */
public class KettleUtil {

	private KettleUtil() {
	};

	/**
	 * @author:
	 * @TODO:运行本地ktr文件
	 */
	@SuppressWarnings("all")
	public static boolean runTransformation(String filename) {
		boolean flag = false;
		try {
			// 初始化任务
			KettleEnvironment.init();
			EnvUtil.environmentInit();
			TransMeta transMeta = new TransMeta(filename);
			transMeta.setCapturingStepPerformanceSnapShots(true);
			Trans trans = new Trans(transMeta);
			trans.setMonitored(true);
			trans.setInitializing(true);
			trans.setPreparing(true);
			trans.setRunning(true);
			trans.setSafeModeEnabled(true);
			// 设置参数 在kettle文件中sql语句的设置 SELECT * FROM xx where xx=${stnlevel}
			// sql参数必须一一对应
			trans.setVariable("stnlevel", "2");
			trans.execute(null);
			// 等待转换执行结束
			trans.waitUntilFinished();
			flag = true;
		} catch (KettleException e) {
			System.out.println(e);
		}
		return flag;
	}

	/**
	 * @author:
	 * @TODO:运行本地kjb文件
	 */
	@SuppressWarnings("all")
	public static boolean runJob(String filename) {
		boolean flag = false;
		try {
			KettleEnvironment.init();
			// jobname 是Job脚本的路径及名称
			JobMeta jobMeta = new JobMeta(filename, null);
			Job job = new Job(null, jobMeta);
			// job.setVariable("id", params[0]);
			// job.setVariable("dt", params[1]);
			job.start();
			job.waitUntilFinished();
			flag = true;
		} catch (KettleException e) {
			System.out.println(e);
		}
		return flag;
	}

	/**
	 * @author:
	 * @TODO:初始化运行环境
	 */
	private static void initKettleEnvironment(boolean isWebProgram)
			throws KettleException {
		String user_dir = "";
		String kettleHome = "";
		if (isWebProgram) {
			user_dir = System.getProperty("user.dir");
			kettleHome = "mms" + File.separator + "WEB-INF";
			// Kettle初始化需要修改相应的配置路径
			System.setProperty("user.dir", kettleHome);
			System.setProperty("KETTLE_HOME", kettleHome);
		}
		// 初始化环境
		// 运行环境初始化(设置主目录、注册必须的插件等)
		KettleEnvironment.init();
		if (isWebProgram) {
			System.setProperty("user.dir", user_dir);
		}
	}

	/**
	 * @author:
	 * @TODO:运行资源库ktr文件
	 */
	@SuppressWarnings("all")
	public static boolean runRepoTransformation(String filename,
			boolean isWebProgram) {
		boolean flag = false;
		try {
			initKettleEnvironment(isWebProgram);
			// 创建资源库 对象
			KettleDatabaseRepository repository = new KettleDatabaseRepository();
			// 创建资源库所在的数据库
			DatabaseMeta databaseMeta = new DatabaseMeta("", "oracle", "jdbc",
					"192.168.1.254", "ORCL", "1521", "cmbexam", "cmbexam");
			// 选择资源库 找到对应的资源库名称
			KettleDatabaseRepositoryMeta kettleDatabaseRepositoryMeta = new KettleDatabaseRepositoryMeta(
					"xx", "xx", "Transformation description", databaseMeta);
			repository.init(kettleDatabaseRepositoryMeta);
			// 连接资源库 资源库的用户名和密码
			repository.connect("admin", "1");
			RepositoryDirectoryInterface directoryInterface = repository
					.loadRepositoryDirectoryTree();
			// 选择转换
			TransMeta transMeta = repository.loadTransformation(filename,
					directoryInterface, null, true, null);
			Trans trans = new Trans(transMeta);
			trans.setVariable("stnlevel", "2");
			trans.execute(null);
			// 等待直到数据结束
			trans.waitUntilFinished();
			if (trans.getErrors() > 0) {
				System.out.println("Transformation Error");
			} else {
				System.out.println("Transformation Successful");
			}
			flag = true;
		} catch (KettleException e) {
			System.out.println(e);
		}
		return flag;
	}

	public static void main(String[] args) throws KettleException {
		// runTransformation("switch.ktr");
		// runJob("xx.kjb");
		runRepoTransformation("XXXX", false);
	}
}





kjb文件中所用到的ktr文件必须与kjb文件放置在一起

注意事项:任务和转换要存成文件格式,任务中引用的转换也要是文件格式,否则就都需要数据库支撑,数据库方法调用了。


分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java集成kettle执行作业文件.rar

    Java集成Kettle执行作业文件是将Java程序与Pentaho Data Integration(Kettle)工具结合,以实现数据处理和转换的自动化。Kettle是一款强大的ETL(Extract, Transform, Load)工具,它允许用户通过图形化界面创建...

    java集成kettle所有jar包

    然而,在Java应用程序中集成Kettle,需要将相关的Jar包添加到项目的类路径中,以便能够调用其API来执行工作流或转换。 首先,要理解Java与Kettle的集成,我们需要知道Kettle的主要组件。Kettle由以下几部分组成: ...

    java调用kettle的依赖包

    - Kettle提供了一个名为`trans-runtime.jar`的库,其中包含Java API,允许开发者在Java程序中执行Kettle转换和作业。这个API使得Java应用程序能够启动、监控和控制Kettle进程。 2. **依赖包解析**: - "4连接...

    Kettle运行jar及其mvn脚本及配置文件.rar

    - 在Java代码中导入Kettle相关的类和API,创建并执行Kettle作业或转换。 - 构建和运行Java项目,Kettle的功能将被无缝集成到项目中。 以上就是关于"Kettle运行jar及其mvn脚本及配置文件.rar"的详细知识点,涵盖了...

    java调用Kettle引用jar包2.zip

    1. `kettle-engine.jar`: 包含了执行Kettle转换和工作流的核心类。 2. `kettle-core.jar`: 提供了Kettle的基础功能和数据类型。 3. `kettle-api.jar`: 提供了API接口,使得外部程序可以与Kettle交互。 4. `kettle-...

    java调用Kettle引用jar包.zip

    此外,如果需要在Java应用中执行Kettle而不需要等待其完成(例如,作为异步任务),可以使用`Trans.execute()`和`Job.execute()`的非阻塞版本,这些版本接受一个回调接口,可以在Kettle流程完成后调用。 总之,Java...

    Java调用Kettle代码

    Kettle提供了API和执行引擎,允许外部应用程序如Java程序与其交互。通过使用Kettle的`trans`和`job` API,可以启动、监控和控制转换(Transformation)和作业(Job)的执行。Kettle的核心类库包括`kettle-engine`和...

    生成kettle作业的Java代码.rar

    `KettleCreateJob.java` 文件很可能是用来创建Kettle作业的Java程序。在Kettle中,我们可以使用Java API来动态生成作业定义。这涉及到对`JobMeta`对象的实例化,设置作业属性,如名称、描述,然后添加作业步骤。每个...

    java开发kettle时用到的jar包

    它提供了执行Kettle作业和转换所需的基本功能。开发者可以通过这个库来创建、读取、修改和运行Kettle的工作流和转换,实现数据处理逻辑的编程控制。 其次,`db.jar`包含与各种数据库系统交互所需的驱动和工具。...

    java调用kettle提供的API实现数据抽取DEMO

    在Java环境中,我们可以利用Kettle的API来编写自定义程序,实现数据抽取、清洗、转换和加载到目标系统。 首先,了解Kettle API的基础知识至关重要。Kettle API是Kettle的核心组件之一,它提供了一系列接口和类,...

    kettle集成应用之---java调用执行transformation和job

    在java应用程序中集成kettle,需要在项目中引入执行kettle所需要的jar包,包括kettle对应的目录下找到的外部jar包。另外,将kettle目录下plugins目录拷贝到应用程序根目录下,这一点很重要,否则在用transformation...

    java调用kettle示例

    Kettle(也称为Pentaho Data Integration或PDI)是一款强大的ETL(Extract, Transform, Load)工具,它允许用户通过图形化界面设计数据转换流程,并能被其他应用程序如Java程序调用执行这些流程。在本示例中,我们将...

    java后台使用kettle的lib文件

    在Java项目中集成Kettle,需要利用Kettle的库文件,也就是lib目录下的JAR文件,这些文件包含了Kettle运行所需的所有类和库。 Kettle作为一个开源的数据集成解决方案,提供了丰富的数据处理功能,如读取和写入各种...

    Kettle java API

    它提供了一套全面的Java API,允许开发人员在Java应用程序中直接集成和操作Kettle的功能。这篇详细的知识点解释将深入探讨Kettle Java API的核心概念、使用场景和主要功能。 1. **Kettle Engine API**: Kettle...

    java调用kettle所需jar包(包含oracle和mysqljar驱动).rar

    Java调用Kettle是将Java程序与Pentaho Kettle(也称为Spoon)集成的过程,Kettle是一款强大的数据转换和ETL(提取、转换、加载)工具。在这个过程中,Java代码通过调用Kettle的相关API来执行转换或作业,实现数据...

    Java调用kettle转换

    此外,还需要引入Kettle的Java库文件。在本例中,我们首先初始化Kettle环境: ```java KettleEnvironment.init(); ``` 该行代码用于初始化Kettle运行时环境,包括设置线程上下文类加载器等操作,是调用Kettle功能...

    java远程调用kettle说明与代码.pdf

    Kettle提供了Carte Web Server程序,允许在多个服务器上运行Carte Web Server,在调用不同的ETL任务时,指定不同的目标服务器执行。Carte Web Server可以启动多个实例,每个实例可以接收多个ETL任务,并行执行任务,...

    java调用Kettle5.3任务

    Java调用Kettle 5.3任务是一种在Java应用程序中集成Kettle(Pentaho Data Integration,也称为ETL工具)的方式,以便利用其强大的数据转换和加载功能。以下是对这个主题的详细解释: 1. **Kettle简介**:Kettle是一...

    用java调用kettle的jar包.zip

    例如,可以使用Java的`ScheduledExecutorService`来定期执行Kettle作业,或者使用Apache Commons Daemon或Java的`java.lang.Runnable`接口将Java应用打包成服务,以便在后台持续运行。 总结一下,本示例中的"用java...

    Kettle手册

    - Kettle安装:用户可以通过下载Kettle的发行包,解压并运行安装程序或直接使用二进制包来安装Kettle。 - 运行Spoon:Spoon是Kettle的图形化用户界面,用于创建、编辑、运行和监控转换和任务。 2. 关于资源库: ...

Global site tag (gtag.js) - Google Analytics