使用Java程序调用本地转换盒作业,资源库中的转换和作业(kettle4.2)
来源:互联网 发布:jav网络机顶盒官网 编辑:程序博客网 时间:2024/06/01 08:05
新建Java工程,引入所有需要的包,新建Java类:KettleJava.java,代码如下:(四个方法分别实现执行本地转换和作业,资源库中的转换和作业)
package kettle.java;
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.logging.LogWriter;
import org.pentaho.di.core.util.EnvUtil;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.repository.Repository;
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;
public class KettleJava {
//执行本地转换
public void runNativeTran(){
String transName ="D:/etltest/etltest4.2/kettleJava/Excel_parameter.ktr";
try {
//初始化kettle环境
KettleEnvironment.init();
//直接执行本地转换
TransMeta transformationMetaNative =new TransMeta(transName);
//创建ktr
Trans trans = new Trans(transformationMetaNative);
//执行ktr
trans.execute(null);
//等待执行完毕
trans.waitUntilFinished();
if(trans.getErrors()>0) {
System.err.println("Transformation run Failure!");
}
else {
System.out.println("Transformation run successfully!");
}
} catch (KettleException e) {
e.printStackTrace();
}
}
//执行本地作业
public void runNativeJob(){
String jobName="D:/etltest/etltest4.2/kettleJava/EtltestJob.kjb";
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();
}
}
//执行资源库中的转换
public void runRepTran(){
String transName ="Excel_parameter";
try {
//初始化kettle环境
KettleEnvironment.init();
//创建资源库对象,此时的对象还是一个空对象
KettleDatabaseRepository repository = new KettleDatabaseRepository();
//创建资源库数据库对象,类似我们在spoon里面创建资源库
DatabaseMeta dataMeta =
new DatabaseMeta("etltest4.2_repository_mysql","MYSQL","Native","localhost",
"etltest_repository4_2","3306","admin","admin");
//资源库元对象,名称参数,id参数,描述等可以随便定义
KettleDatabaseRepositoryMeta kettleDatabaseMeta =
new KettleDatabaseRepositoryMeta("etltest4.2_repository_mysql", "etltest4.2_repository_mysql", "databaseRepositoryMeta description",dataMeta);
//kettleDatabaseMeta.setConnection(dataMeta);
//给资源库赋值
repository.init(kettleDatabaseMeta);
//连接资源库
repository.connect("admin","admin");
//根据变量查找到模型所在的目录对象,此步骤很重要。
RepositoryDirectoryInterface directory = repository.findDirectory("/parameters");
//创建ktr元对象--资源库中的转换
TransMeta transformationMetaRep = ((Repository) repository).loadTransformation(transName, directory, null, true, null );
//创建ktr
Trans trans = new Trans(transformationMetaRep);
//执行ktr
trans.execute(null);
//等待执行完毕
trans.waitUntilFinished();
if(trans.getErrors()>0) {
System.err.println("Transformation run Failure!");
}else {
System.out.println("Transformation run successfully!");
}
} catch (KettleException e) {
e.printStackTrace();
}
}
//执行资源库中的作业
public void runRepJob(){
String jobName ="job_ftp_upload";
try {
//初始化kettle环境
KettleEnvironment.init();
//创建资源库对象,此时的对象还是一个空对象
KettleDatabaseRepository repository = new KettleDatabaseRepository();
//创建资源库数据库对象,类似我们在spoon里面创建资源库
DatabaseMeta dataMeta =
new DatabaseMeta("etltest4.2_repository_mysql","MYSQL","Native","localhost","etltest_repository4_2","3306","admin","admin");
//资源库元对象,名称参数,id参数,描述等可以随便定义
KettleDatabaseRepositoryMeta kettleDatabaseMeta =
new KettleDatabaseRepositoryMeta("etltest4.2_repository_mysql", "etltest4.2_repository_mysql", "databaseRepositoryMeta description",dataMeta);
//kettleDatabaseMeta.setConnection(dataMeta);
//给资源库赋值
repository.init(kettleDatabaseMeta);
//连接资源库
repository.connect("admin","admin");
//根据变量查找到模型所在的目录对象,此步骤很重要。
RepositoryDirectoryInterface directory = repository.findDirectory("/work");
//创建kjb元对象--资源库中的作业
JobMeta jobMetaRep = ((Repository) repository).loadJob(jobName, directory, null, null);//loadTransformation(transName, directory, null, true, null );
//JobMeta jobMeta = new JobMeta(jobName, null);
//JobMeta jobMetaRep= new JobMeta(jobName, repository);
Job job = new Job(repository, jobMetaRep);
job.start();
job.waitUntilFinished();
if(job.getErrors()>0) {
System.err.println("Transformation run Failure!");
}else{
System.out.println("Transformation run successfully!");
}
} catch (KettleException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
KettleJava kettleJava=new KettleJava();
//kettleJava.runNativeTran();
//kettleJava.runRepTran();
kettleJava.runNativeJob();
//kettleJava.runRepJob();
}
}
- 使用Java程序调用本地转换盒作业,资源库中的转换和作业(kettle4.2)
- Java-动态传参调用kettle转换和作业
- Java作业-温度转换
- kettle生成主键UUID和调用转换作业
- kettle生成主键UUID和调用转换作业
- 作业:日期转换
- C++作业-温度转换
- java-调用kettle4.2资源与任务-初级版本
- 使用java调用本地exe程序和cmd程序
- java 整合Web调用kettle本地转换
- 使用Java中的Process类调用本地程序
- 斯坦福作业2:简单Java程序 控制台作业合集
- 斯坦福作业2:简单Java程序 图形作业合集
- 课后作业:创建一个程序将摄氏温度值(C)转换为华氏温度值(F)
- java程序作业代码
- Kettle4 Repository 操作示例 (登陆资源库,获取模型,运行)
- Java(流程控制作业)完全数、水仙花数、温度转换
- 《程序设计入门—Java语言.翁恺》第二周编程作业(1)-时间转换
- PHP Excel
- Window Service 创建:在后台执行一个服务,可定时做一些操作,如轮询数据库,定时发邮件
- PDF格式转换器免费下载
- 第9周项目5-程序填充题(2)
- 掉电脑有毒
- 使用Java程序调用本地转换盒作业,资源库中的转换和作业(kettle4.2)
- R正则表达式30分钟入门教程
- android之简单的ListView
- 在SurfaceView中使用双缓冲
- 从流控想到的一些问题
- windows python及pip工具安装
- Oracle11g下无法启动EM
- android软键盘的用法总结
- 22个值得收藏的android开源代码-UI篇