Kettle java调用
来源:互联网 发布:mysql 用户管理 编辑:程序博客网 时间:2024/06/04 19:24
[java] view plain copy
[java] view plain copy
- package org.jsmsa.etl.kettle;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.ArrayList;
- import java.util.List;
- import org.apache.log4j.Logger;
- import org.pentaho.di.core.KettleEnvironment;
- import org.pentaho.di.core.database.DatabaseMeta;
- import org.pentaho.di.core.exception.KettleDatabaseException;
- 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.LongObjectId;
- import org.pentaho.di.repository.ObjectId;
- 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;
- public class KettleExecutor {
- Logger log = Logger.getLogger(getClass());
- KettleDatabaseRepository rep;
- RepositoryDirectoryInterface dir;
- public String getDatabaseRepositoryXMl(){
- String xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
- "<connection>" +
- "<name>jsmsadc_etl</name>" +
- "<type>ORACLE</type>" +
- "<server>127.0.0.1</server>" +
- "<access>Native</access>" +
- "<database>orcl</database>" +
- "<port>1521</port>" +
- "<username>jsmsadc</username>" +
- "<password>password</password>" +
- "<servername/>" +
- "<data_tablespace/>" +
- "<index_tablespace/>" +
- "</connection>" ;
- return xml;
- }
- public void connectRepository(String username,String password){
- try {
- EnvUtil.environmentInit();
- KettleEnvironment.init();
- DatabaseMeta dataMeta = new DatabaseMeta(getDatabaseRepositoryXMl());
- KettleDatabaseRepositoryMeta repInfo = new KettleDatabaseRepositoryMeta();
- repInfo.setConnection(dataMeta);
- rep = new KettleDatabaseRepository();
- rep.init(repInfo);
- rep.connect(username, password);
- ObjectId rootId = Long.parseLong(rep.getRootDirectoryID().getId()) > 0 ? rep.getRootDirectoryID() : new LongObjectId(0);
- dir = new RepositoryDirectory();
- dir.setObjectId(rootId);
- } catch (KettleException e) {
- e.printStackTrace();
- }
- }
- public List<ObjectId> getObjectIds(String sql) throws KettleDatabaseException{
- List<ObjectId> list = new ArrayList<ObjectId>();
- Statement stmt = null;
- ResultSet rs = null;
- try {
- stmt = rep.getDatabase().getConnection().createStatement();
- rs = stmt.executeQuery(sql);
- while(rs.next())
- list.add(new LongObjectId(rs.getLong(1)));
- } catch (SQLException e) {
- e.printStackTrace();
- }finally{
- try {
- if(rs != null)
- rs.close();
- if(stmt != null)
- stmt.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- return list;
- }
- public void runAllJobs(){
- try {
- List<ObjectId> jobIds = getObjectIds("select id_job from r_job where job_status >= 0 order by id_job");
- for (final ObjectId oid : jobIds) {
- // new JobsExecutor(rep, oid).run();
- new Runnable() {
- @Override
- public void run(){
- try {
- JobMeta jobMeta = rep.loadJob(oid, null);
- Job job = new Job(rep,jobMeta);
- log.info("***********************************开始执行job:"+job.getJobname());
- job.start();
- job.waitUntilFinished();
- if (job.getErrors() > 0) {
- log.info("***********************************执行job错误:"+job.getJobname());
- }
- } catch (KettleException e) {
- e.printStackTrace();
- }
- }
- }.run();
- }
- } catch (KettleException e) {
- e.printStackTrace();
- }
- }
- public void runJob(ObjectId jobId,String versionLabel){
- try {
- JobMeta jobMeta = rep.loadJob(jobId, versionLabel);
- Job job = new Job(rep,jobMeta);
- job.start();
- job.waitUntilFinished();
- if (job.getErrors() > 0) {
- System.out.println("decompress fail!");
- }
- } catch (KettleException e) {
- e.printStackTrace();
- }
- }
- /**
- * 文件方式调用Job
- * @param fileName Job脚本的路径及名称
- */
- public void runJob(String fileName) {
- try {
- KettleEnvironment.init();
- JobMeta jobMeta = new JobMeta(fileName, null);
- Job job = new Job(null, jobMeta);
- // 向Job 脚本传递参数,脚本中获取参数值:${参数名}
- // job.setVariable(paraname, paravalue);
- job.start();
- job.waitUntilFinished();
- if (job.getErrors() > 0) {
- System.out.println("decompress fail!");
- }
- } catch (KettleException e) {
- System.out.println(e);
- }
- }
- /**
- * 文件方式调用Transformation
- * @param filename Transformation脚本的路径及名称
- */
- public void runTran(String filename) {
- try {
- KettleEnvironment.init();
- TransMeta transMeta = new TransMeta(filename);
- Trans trans = new Trans(transMeta);
- trans.prepareExecution(null);
- trans.startThreads();
- trans.waitUntilFinished();
- if (trans.getErrors() != 0) {
- System.out.println("Error");
- }
- } catch (KettleException e) {
- e.printStackTrace();
- }
- }
- }
0 0
- Kettle java调用
- java调用Kettle总结
- Kettle java调用
- Java调用ETL工具Kettle
- kettle中调用java类
- java调用spoon kettle API
- java调用kettle工具类
- kettle+java代码调用Webservice
- kettle调用自定义java类
- kettle ETL java 调用 kettle job 或 transfer
- kettle ETL java 调用 kettle job 或 transfer
- kettle 里用js 调用java类
- java中调用kettle转换文件
- java中调用kettle转换文件
- Java调用Kettle执行任务或转换
- Kettle调用Java文件(Jar包)
- Java项目中调用Kettle转换
- Java集成kettle调用trans文件
- SS安卓无效电脑有效
- git 步骤记录
- EAS BOS 常用代码
- 一个比较有趣的c语言程序纠错,大家都可以学习下哦
- view
- Kettle java调用
- codemirror代码编辑器,检测语法高亮显示
- 高并发web系统调优(十一)进入大型分布式应用时代和廉价服务器群梦想时代
- Android初学笔记(1)
- 如何自定义Angular2 管道
- 导论作业 WEB
- HBase源码分析之regionserver写入流程分析
- MVP
- 用Ant实现Java项目的自动构建和部署