代码如下:调用kettle 4.2版本
package test;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.vfs.FileSelector;
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.RepositoryDirectory;
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;
import com.longtech.configuration.BaseConfiguration;
import com.platform.common.util.LoggerUtil;
/**
*
* @Description: java调用kettle 数据库型资料库中的转换
* @author chen 此类是调用kettle 4.2版本的测试类
* @version 1.0,
* @date 2013-5-23 下午02:40:50
*/
public class ExecRepositoryTrans {
/**
* 本测试类慎用!!!!!!!
* @param args
*/
public static void main(String[] args) {
//D:\java\workspace\sics\src\config\kettle
String classesdir = BaseConfiguration.getString("classesdir");
String jobName = BaseConfiguration.getString("kettle.path.file");
if(StringUtils.isNotEmpty(jobName)){
LoggerUtil.info(ExecRepositoryTrans.class, "执行kettle job start-------------------");
runJob(classesdir + jobName);
LoggerUtil.info(ExecRepositoryTrans.class, "执行kettle job end -------------------");
}else{
LoggerUtil.info(ExecRepositoryTrans.class, "请配置kettle.path.file job 的路径文件");
}
}
/**
*java 调用kettle 转换
*/
public static void runTransfer(){
Trans trans=null;
FileSelector f = null;
try {
// 初始化
String fName= "D:\\kettle\\informix_to_am_4.ktr";
// 转换元对象
KettleEnvironment.init();//初始化
EnvUtil.environmentInit();
TransMeta transMeta = new TransMeta(fName);
// 转换
trans = new Trans(transMeta);
// 执行转换
trans.execute(null);
// 等待转换执行结束
trans.waitUntilFinished();
//抛出异常
if(trans.getErrors()>0){
throw new Exception("There are errors during transformation exception!(传输过程中发生异常)");
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* java 调用 kettle 的job
* @param jobname 如: String fName= "D:\\kettle\\informix_to_am_4.ktr";
*/
public static void runJob(String jobname){
try {
KettleEnvironment.init();
//jobname 是Job脚本的路径及名称
JobMeta jobMeta = new JobMeta(jobname, null);
Job job = new Job(null, jobMeta);
//向Job 脚本传递参数,脚本中获取参数值:${参数名}
//job.setVariable(paraname, paravalue);
job.start();
job.waitUntilFinished();
if (job.getErrors() > 0) {
throw new Exception("There are errors during job exception!(执行job发生异常)");
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 配置数据源 调用资源库中的相关job 、transfer
*/
public static void dbResource(){
String transName="t1";
try {
KettleEnvironment.init();
DatabaseMeta dataMeta = new DatabaseMeta("KettleDBRep","MSSQL","Native","127.0.0.1","etl","1433","sa","bsoft");
KettleDatabaseRepositoryMeta repInfo = new KettleDatabaseRepositoryMeta();
repInfo.setConnection(dataMeta);
KettleDatabaseRepository rep = new KettleDatabaseRepository();
rep.init(repInfo);
rep.connect("admin", "admin");
RepositoryDirectoryInterface dir = new RepositoryDirectory();
dir.setObjectId(rep.getRootDirectoryID());
TransMeta tranMeta = rep.loadTransformation(rep.getTransformationID(transName, dir), null);
Trans trans = new Trans(tranMeta);
trans.execute(null);
trans.waitUntilFinished();
} catch (KettleException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
Java调用Kettle中的Job与转换是数据集成过程中的常见需求,Kettle(Pentaho Data Integration,简称PDI)是一种强大的ETL工具,而Java则作为通用编程语言,能够灵活地与各种系统进行交互。在Java中调用Kettle的Job和...
kettle集成应用之java调用执行transformation和job kettle是一款功能强大的数据集成工具,可以在java应用程序中集成应用,实现调用资源库上和本地的transformation和job。下面是kettle集成应用的详细知识点: 一、...
Kettle API 是一个强大的工具,允许开发者通过Java代码与Pentaho Data Integration (Kettle) 进行交互,实现数据提取、转换和加载(ETL)过程的自动化。在给定的示例中,主要展示了如何使用Kettle API 创建、保存和...
Java调用Kettle进行数据处理是一种常见的集成方案,Kettle作为一个强大的ETL(Extract, Transform, Load)工具,因其完全由Java编写,因此可以无缝地与Java应用程序进行交互。Kettle提供了丰富的API,使得开发者能够...
在标题《kettle中调用java类》示例代码中,我们关注的是如何在Kettle的转换或作业中嵌入Java代码,以实现更复杂的数据处理逻辑。 首先,Kettle支持两种方式来调用Java类:使用“Java Class”步骤和使用“Execute ...
Java调用Kettle 5.3任务是一种在Java应用程序中集成Kettle(Pentaho Data Integration,也称为ETL工具)的方式,以便利用其强大的数据转换和加载功能。以下是对这个主题的详细解释: 1. **Kettle简介**:Kettle是一...
Java调用Kettle是将Java程序与Pentaho Kettle(也称为Spoon)集成,以便利用Kettle的强大ETL(提取、转换、加载)能力。Kettle是一款开源的数据集成工具,它允许开发者通过编写XML脚本来执行数据处理任务。在Java...
Java调用Kettle是一种常见的数据集成方案,Kettle(也称为Pentaho Data Integration或PDI)是一款强大的ETL(Extract, Transform, Load)工具,它允许用户通过图形化界面设计数据转换流程,并能被其他应用程序如Java...
Java远程调用Kettle是一种基于Java的ETL(Extract、Transform、Load)工具,能够对数据进行提取、转换、加载,以满足不同业务需求。Kettle提供了名为Carte的Web Server程序,也被称为Slave Server,启动该程序可以把...
- 通过Java调用Kettle,可以构建更复杂的工作流,例如在Web应用、定时任务服务或其他后台服务中嵌入ETL过程。 - 可以与其他Java框架(如Spring)集成,实现服务化部署和管理。 7. 文件KettleAndJava可能包含的...
Java调用Kettle API实现数据抽取DEMO是一个典型的ETL(提取、转换、加载)过程,其中Kettle(又称Pentaho Data Integration或KDI)是一个强大的数据集成工具,允许开发者通过图形化界面或者编程方式处理数据迁移和...
Java调用Kettle(Pentaho Data Integration,也称为Kettle或PDI)是一个常见的需求,特别是在集成数据处理和ETL(提取、转换、加载)流程中。Kettle是一款强大的开源数据集成工具,它提供了丰富的数据操作和转换功能...
kettle使用,用来各个数据库之间ETL数据抽取,功能比较全面。
在Java中调用Kettle的jar包,我们通常会依赖Kettle的API,如`org.pentaho.di.core.KettleClientEnvironment`和`org.pentaho.di.job.Job`等。首先,需要初始化Kettle环境,这一步至关重要,因为它确保了与Kettle的...
Java调用Kettle是将Java程序与Pentaho Kettle(也称为Kettle或 Spoon)集成,以便在Java环境中执行Kettle的作业(Job)和转换(Transformation)。Kettle是一款强大的ETL(提取、转换、加载)工具,它提供了一种图形...
在实际业务场景中,我们常常需要通过编程的方式调用Kettle的转换(Transformation)或作业(Job),以便更好地集成到现有的应用程序或工作流程中。本文将详细介绍如何使用Java代码来调用Kettle的转换。 #### 二、...
- Java API:Kettle提供了Java API,可以直接在Java代码中创建和运行Job或Transformation,实现与业务逻辑的无缝结合。 - Spoon Plugin:开发Spoon插件,允许在Spoon界面中直接运行Java代码。 - Shell命令行:...
Java调用Kettle是将Java程序与Pentaho Kettle(也称为Spoon)集成的过程,Kettle是一款强大的数据转换和ETL(提取、转换、加载)工具。在这个过程中,Java代码通过调用Kettle的相关API来执行转换或作业,实现数据...
本资源主要内容包括(资源有保证,都是干货,一看就会): ...2.JAVA传参调用KETTLE远程服务执行任务实现过程及注意事项说明。 3.附件包括:配套说明文档、代码包、KETLLE任务测试文件及数据库脚本。