Etl工具之Kettle与java集成二
来源:互联网 发布:触摸屏查询软件 编辑:程序博客网 时间:2024/09/21 08:43
1.上篇文章已经讲到,怎么新建一个转换,当然,那只是很简单的操作,下面我们将学习怎么将在kettle新建的转换或任务,放入到程序中,由程序调用执行
首先,我们需要将kettle的jar包放入到程序的lib目录下,当然不只kettle包,还有其他一些重要的包,可以直接到http://download.csdn.net/download/xiaosemei/9967136进行下载,
2.新建项目kettle ,我这里用来演示,
3.kettle初始化代码(我这里执行和初始是分开的。。方便在次执行的时候不需要初始化)
import org.pentaho.di.core.KettleEnvironment;import org.pentaho.di.core.database.DatabaseMeta;import org.pentaho.di.core.exception.KettleException;import org.pentaho.di.repository.RepositoryDirectoryInterface;import org.pentaho.di.repository.kdr.KettleDatabaseRepository;import org.pentaho.di.repository.kdr.KettleDatabaseRepositoryMeta;/** * Created by 31767 on 2017/8/16. */public class KettleEnvironments { public static KettleDatabaseRepository repository; public static DatabaseMeta databaseMeta; public static KettleDatabaseRepositoryMeta kettleDatabaseMeta; public static RepositoryDirectoryInterface directory; /* * KETTLE初始化*/ public static String KettleEnvironments() { try { KettleEnvironment.init();repository = new KettleDatabaseRepository(); databaseMeta = new DatabaseMeta("ETL", "Oracle", "Native", "172.14.5.6","cdr", "1521", "ETL", "xin");//资源库数据库地址,我这里采用oracle数据库 kettleDatabaseMeta = new KettleDatabaseRepositoryMeta("ETL", "ERP", "Transformation description", databaseMeta); repository.init(kettleDatabaseMeta); repository.connect("adm", "adm");//资源库用户名和密码 directory = repository.loadRepositoryDirectoryTree(); } catch (KettleException e) { e.printStackTrace(); return e.getMessage(); } return null; }}4.kettle执行代码
/** * Created by DEH on 2017/7/3. */import org.pentaho.di.core.exception.KettleException;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.trans.Trans;import org.pentaho.di.trans.TransMeta;public class ExecRepository {
/*测试代码,*/ public static void main(String[] args) { KettleEnvironments.KettleEnvironments(); String transName=null;//转换或作业名称 String[] params=null;//参数 try { String result = ExecuteDataBaseRepTran(KettleEnvironments.repository, transName, params, null); } catch (KettleException e) { e.printStackTrace(); } } /*执行转换文件*/ private static String ExecuteDataBaseRepTran(KettleDatabaseRepository repository, String transName, String param[], String jgname) throws KettleException { //根据变量查找到模型所在的目录对象,此步骤很重要。 RepositoryDirectoryInterface directory = repository.findDirectory("/"); //创建ktr元对象 TransMeta transformationMeta = ((Repository) repository).loadTransformation(transName, directory, null, true, null); //创建ktr Trans trans = new Trans(transformationMeta); //执行ktr trans.execute(param); //等待执行完毕 trans.waitUntilFinished(); if (trans.getErrors() > 0) { return "NO"; } else { return "OK"; } } private static String execRepositoryJobs(KettleDatabaseRepository repository, RepositoryDirectoryInterface directory, String jobName, String jhid) throws KettleException { JobMeta jobMeta = ((Repository) repository).loadJob(jobName, directory, null, null); Job job = new Job(repository, jobMeta); job.setVariable("id", jhid); job.start(); job.waitUntilFinished(); if (job.getErrors() > 0) { return "NO"; } else { return "OK"; } }}
至此,kettle与java集成完成
阅读全文
0 0
- Etl工具之Kettle与java集成二
- ETL工具—kettle使用之二
- 开源ETL工具kettle系列之在应用程序中集成
- Java调用ETL工具Kettle
- ETL工具kettle与JAVA结合使用程序生成转换
- 开源ETL工具kettle系列之常见问题
- 开源ETL工具kettle系列之常见问题
- 开源ETL工具kettle系列之常见问题
- 开源ETL工具kettle系列之常见问题
- 开源ETL工具kettle系列之常见问题
- 开源ETL工具kettle系列之常见问题
- 开源ETL工具kettle系列之常见问题
- ETL工具—kettle使用之三
- 开源ETL工具kettle系列之常见问题
- ETL工具Pentaho Kettle的transformation和job集成
- 关于ETL 工具 kettle
- 开源ETL工具 Kettle
- ETL工具 kettle
- 美团外卖GPRS热敏打印机如何设置自动接单打印(图文)
- 谈谈DOMContentLoaded:Javascript中的domReady引入机制
- 反射的思想
- android连续点击出现多个Activity界面
- ubuntu16.04安装opencv2.4.9失败一次后成功
- Etl工具之Kettle与java集成二
- ros串口通讯接口编程
- 用YOLO训练自己的数据集--20170823
- MySql_explain详解
- Linux iptables防火墙规则配置的两个坑
- 使用sendMail发送邮件
- Python时间序列LSTM预测系列教程(5)-单变量
- 针对IE9时间不兼容问题研究
- S2-052的POC测试