java调用kettle_导入jar包(1)
版权声明:本文为博主原创文章,未经博主允许不得转载。
Java调用Kettle执行任务或转换,需要使用Kettle中的jar,可以先导入lib目录中的几个基本的jar,如:kettle-core.jar、kettle-db.jar、kettle-engine.jar ,其它jar根据情况进行添加,所需的jar在<kettle-home>\lib、<kettle-home>\libext下面都可以找到,本示例引用的jar如下图:


之后编写代码测试Java调用,调用前先使用Kettle的设计器设计了一个转换,取名为voucher.ktr。另外,本示例使用的是Kettle3.2的版本,据说4.1版本调用方法会有不同。
- 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.JobEntryLoader;
- import org.pentaho.di.job.JobMeta;
- import org.pentaho.di.repository.Repository;
- import org.pentaho.di.repository.RepositoryDirectory;
- import org.pentaho.di.repository.RepositoryMeta;
- import org.pentaho.di.repository.UserInfo;
- import org.pentaho.di.trans.StepLoader;
- import org.pentaho.di.trans.Trans;
- import org.pentaho.di.trans.TransMeta;
- /**
- * Java调用Kettle示例代码
- *
- * @author 李文锴
- * @since 2012-8-14 下午03:50:00
- *
- */
- public class KettleTest {
- public static void main(String[] args) throws KettleException {
- String filename = "voucher.ktr";
- // callNativeTrans(filename);
- // executeTrans();
- // executeJobs();
- callNativeTransWithParam(filename);
- System.out.println("ok");
- }
- /**
- * 调用本地的转换文件
- *
- * @Description:
- * @param transFileName
- * @throws KettleException
- * @author 李文锴
- * @since:2012-8-15 下午02:58:41
- */
- public static void callNativeTrans(String transFileName) throws KettleException {
- // 初始化
- EnvUtil.environmentInit();
- StepLoader.init();
- // 转换元对象
- TransMeta transMeta = new TransMeta(transFileName);
- // 转换
- Trans trans = new Trans(transMeta);
- // 执行转换
- trans.execute(null);
- // 等待转换执行结束
- trans.waitUntilFinished();
- }
- /**
- * 调用本地的转换文件(带参数)
- *
- * @Description:
- * @param transFileName
- * @throws KettleException
- * @author 李文锴
- * @since:2012-8-15 下午02:58:54
- */
- public static void callNativeTransWithParam(String transFileName) throws KettleException {
- // 初始化
- EnvUtil.environmentInit();
- StepLoader.init();
- // 转换元对象
- TransMeta transMeta = new TransMeta(transFileName);
- // 转换
- Trans trans = new Trans(transMeta);
- String[] params = {};
- // 执行转换
- trans.execute(params);
- // 等待转换执行结束
- trans.waitUntilFinished();
- }
- /**
- * 执行存储在数据库资源库中的转换
- *
- * @Description:
- * @throws KettleException
- * @author 李文锴
- * @since:2012-8-15 下午02:59:14
- */
- public static void executeTrans() throws KettleException {
- // 初始化
- EnvUtil.environmentInit();
- StepLoader.init();
- // 日志
- LogWriter log = LogWriter.getInstance("TransTest.log", true, LogWriter.LOG_LEVEL_DEBUG);
- // 用户
- UserInfo userInfo = new UserInfo();
- userInfo.setLogin("admin");
- userInfo.setPassword("admin");
- // 数据库连接元对象(连接名称,不必与kettle中配置的保持一致:数据库类型:连接方式(kettle支持的连接方式):资源库IP:资源库实例名:资源库端口:资源库用户名:资源库用户密码)
- DatabaseMeta connection = new DatabaseMeta("", "Oracle", "Native", "192.168.3.232", "NSDEV", "1521", "nstcsa3441", "671468");
- // 资源库元对象
- RepositoryMeta repinfo = new RepositoryMeta();
- repinfo.setConnection(connection);
- // 资源库
- Repository rep = new Repository(log, repinfo, userInfo);
- // 连接资源库
- rep.connect("");
- // 资源库目录对象
- RepositoryDirectory dir = new RepositoryDirectory(rep);
- // 转换元对象
- TransMeta transMeta = new TransMeta(rep, "凭证(N9->EVC2)", dir);
- // 转换
- Trans trans = new Trans(transMeta);
- // 执行转换
- trans.execute(null);
- // 等待转换执行结束
- trans.waitUntilFinished();
- }
- /**
- * 执行本地的任务文件
- *
- * @Description:
- * @param jobFileName
- * @throws KettleException
- * @author 李文锴
- * @since:2012-8-15 下午02:59:34
- */
- public static void callNativeJob(String jobFileName) throws KettleException {
- // 初始化
- EnvUtil.environmentInit();
- JobEntryLoader.init();
- StepLoader.init();
- // 日志
- LogWriter log = LogWriter.getInstance("TransTest.log", true, LogWriter.LOG_LEVEL_DETAILED);
- // job元对象
- JobMeta jobMeta = new JobMeta(log, jobFileName, null);
- // job
- Job job = new Job(log, StepLoader.getInstance(), null, jobMeta);
- jobMeta.setInternalKettleVariables(job);
- // 执行job
- job.execute();
- // 等待job执行结束
- job.waitUntilFinished();
- }
- /**
- * 执行数据库资源库中的任务
- *
- * @Description:
- * @throws KettleException
- * @author 李文锴
- * @since:2012-8-15 下午02:59:45
- */
- public static void executeJobs() throws KettleException {
- // 初始化
- EnvUtil.environmentInit();
- JobEntryLoader.init();
- StepLoader.init();
- // 日志
- LogWriter log = LogWriter.getInstance("TransTest.log", true, LogWriter.LOG_LEVEL_DETAILED);
- // 用户
- UserInfo userInfo = new UserInfo();
- userInfo.setLogin("admin");
- userInfo.setPassword("admin");
- // 数据库连接元对象
- DatabaseMeta connection = new DatabaseMeta("", "Oracle", "Native", "192.168.3.232", "NSDEV", "1521", "nstcsa3441", "671468");
- // 资源库元对象
- RepositoryMeta repinfo = new RepositoryMeta();
- repinfo.setConnection(connection);
- // 资源库
- Repository rep = new Repository(log, repinfo, userInfo);
- // 连接资源库
- rep.connect("");
- // 资源库目录对象
- RepositoryDirectory dir = new RepositoryDirectory(rep);
- // 步骤加载对象
- StepLoader steploader = StepLoader.getInstance();
- // job元对象
- JobMeta jobmeta = new JobMeta(log, rep, "4.账户每日余额", dir);
- // job
- Job job = new Job(log, steploader, rep, jobmeta);
- // 执行job
- job.execute();
- // 等待job执行结束
- job.waitUntilFinished();
- }
- }
本示例只能实现一次调用,暂时不知道如何通过API设定运行时间,但可以结合spring和Quartz,设定定时调度,以便实现调度目标。
来源:http://blog.csdn.net/scorpio3k/article/details/7869196
java调用kettle_导入jar包(1)的更多相关文章
- 分享:根据webservice WSDL地址自动生成java调用代码及JAR包
分享:根据webservice WSDL地址自动生成java调用代码及JAR包使用步骤:一.安装java 并配置JAVA_HOME 及 path二.安装ANT 并配置ANT_HOME三.解压WsdlT ...
- 在java工程中导入jar包的注意事项
在java工程中导入jar包后一定要bulid path,不然jar包不可以用.而在java web工程中导入jar包后可以不builld path,但最好builld path.
- java项目(java project)如何导入jar包的解决方案列表
右键项目-properties-java build path(左侧菜单)-选择libraries 有两种方式,导入jar包实际上就是建立一种链接,并不是copy式的导入 一.导入外部包,add ex ...
- eclipse项目(java project)如何导入jar包的解决方案列表?
右键项目-properties-java build path(左侧菜单)-选择libraries 有两种方式,导入jar包实际上就是建立一种链接,并不是copy式的导入 一.导入外部包,add ex ...
- Idea JAVA項目的导入JAR包和导出jar包
一.IDea项目中导入jar包 打开菜单project structure,然后选择modules/dependencies下选择右侧的+,选择jar包目录中的jar文件,导入 二.导出jar包 菜单 ...
- java maven项目 导入jar包注意
1.将jar 包放到lib目录下 2.build path 3.点击maven主项目右键选择properties 4.选择myeclipse 下的第一个选项 5.点击add 选择archives ...
- java web工程导入jar包流程,容易犯错
1)首先把jar包拷贝到WEB-INF/lib下 2)在Eclipse中web/WEB-INF/lib路径下刷新.(省略此步骤就会找不到) 3)Java Build Path中Remove掉Web A ...
- java调用kettle_实现(2)
(1).参照“java调用kettle_导入jar包(1)”,应用etl工具下lib里的所有jar (2). 最近要对一个系统的数据同步到另一个系统中,要求新系统的数据结果完成之后,实时同步到另一个系 ...
- Android使用KSOAP2调用WebService及正确导入jar包的问题(转)
Android使用KSOAP2调用WebService及正确导入jar包的问题(转) 错误信息 最近在学Android使用KSOAP2调用现有的Webservice的方法,期间在网上找了很多代 ...
随机推荐
- nginx 设置错误的自己定义404页面跳转到500
5年前写的站, 当时是在apache下写的error page, 换了nginx后, 404页面直接跳到了500 server内部错误. 仅仅须要在配置 try_files 的时候指定一下就能够了 我 ...
- 将图片转成base64字符串并在JSP页面显示的Java代码
*本事例主要讲了如下几点: * 1:将图片转换为BASE64加密字符串. * 2:将图片流转换为BASE64加密字符串. * 3:将BASE64加密字符串转换为图片. * 4:在jsp文件中以引 ...
- jvm分析备忘
是什么 jps 查看所有的jvm进程,包括进程ID,进程启动的路径等等. jstack 观察jvm中当前所有线程的运行情况和线程当前状态. 系统崩溃了?如果java程序崩溃生成core文件,j ...
- 如何发布本地maven项目jar包部署到nexus私服?
首先在我们的pom里面描述我们要部署的地址: <distributionManagement> <repository> <id>release</id> ...
- vcs github gitlab git名词解释
vcs:version control system git:一个版本管理工具,从git上clone,除了代码,还会把版本信息也给你clone下来. github:一个基于git的代码管理网站,支持公 ...
- pageEncoding和ContextType区别
http://blog.csdn.net/kerrywang/article/details/4454895 pageEncoding 在JSP标准的语法中,如果 pageEncodin ...
- C#指南,重温基础,展望远方!(8)C#数组
数组是一种数据结构,其中包含许多通过计算索引访问的变量. 数组中的变量(亦称为数组的元素)均为同一种类型,我们将这种类型称为数组的元素类型. 数组类型是引用类型,声明数组变量只是为引用数组实例预留空间 ...
- EMQ学习 ---集群
emqttd集群设置管理 一.先来看EMQ的文档定义:http://emqtt.com/docs/v1/cluster.html emqttd集群设置管理 假设部署两台服务器s1.emqtt.io, ...
- MFC的CListCtrl双击获取单元格的行列
首先要把ClistCtrl设置为整选中模式和网格模式 SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT); 重写方法如下: void CAl ...
- tp模型和数据库操作方法
一.新建的模型名和表名一样,采用驼峰式,如表名user_type模型取名为UserType namespace app\index\model;use think\Model;class UserTy ...