1.首先用kettle界面写好一个ktr脚本,如下图,在这里的kettle使用的是官方的7.1版本

2.在自己的项目里面添加如下依赖,前面几个可以通过maven依赖进来,后面有的jar可以在kettle的应用里面找到

        <!-- kettle --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-vfs2</artifactId><version>2.0</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>27.0.1-jre</version></dependency><dependency><groupId>org.scannotation</groupId><artifactId>scannotation</artifactId><version>1.0.3</version></dependency><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId></dependency><dependency><groupId>com.kettle</groupId><artifactId>pentaho-vfs-browser</artifactId><version>7.1.0.0</version><scope>system</scope><systemPath>${project.basedir}/lib/pentaho-vfs-browser-7.1.0.0-        12.jar</systemPath></dependency><dependency><groupId>com.kettle</groupId><artifactId>kettle-engine</artifactId><version>7.1.0.0</version><scope>system</scope><systemPath>${project.basedir}/lib/kettle-engine-7.1.0.0-12.jar</systemPath></dependency><dependency><groupId>com.kettle</groupId><artifactId>kettle-core</artifactId><version>7.1.0.0</version><scope>system</scope><systemPath>${project.basedir}/lib/kettle-core-7.1.0.0-12.jar</systemPath></dependency><dependency><groupId>com.kettle</groupId><artifactId>metastore</artifactId><version>7.1.0.0</version><scope>system</scope><systemPath>${project.basedir}/lib/metastore-7.1.0.0-12.jar</systemPath></dependency>

3.编写java文件kettle.java,main方法执行成功!

import java.util.Map;
import java.util.UUID;import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.util.EnvUtil;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class KettleQuartz {protected static final Logger logger_info = LoggerFactory.getLogger(KettleQuartz.class);public static void main(String[] args) {runKettleTransfer(null, "C:\\dems\\kettle\\dems.ktr");}/*** 执行作业* * @param initKettleParam* @param kjbFilePath* @return*/public static boolean runKettleJob(Map<String, String> initKettleParam, String kjbFilePath) {String uuid = UUID.randomUUID().toString();logger_info.info("ExecKettleUtil@runKettleJob:" + uuid + " {kjbFilePath:" + kjbFilePath + "}");try {KettleEnvironment.init();// 初始化job路径JobMeta jobMeta = new JobMeta(kjbFilePath, null);Job job = new Job(null, jobMeta);// 初始化job参数,脚本中获取参数值:${variableName}if (initKettleParam != null) {for (String variableName : initKettleParam.keySet()) {job.setVariable(variableName, initKettleParam.get(variableName));}}job.start();job.waitUntilFinished();if (job.getErrors() > 0) {logger_info.info("ExecKettleUtil@runKettleJob:" + uuid + " 执行失败");} else {logger_info.info("ExecKettleUtil@runKettleJob:" + uuid + " 执行成功");}return true;} catch (Exception e) {logger_info.error("ExecKettleUtil@runKettleJob:" + uuid, e);return false;}}/*** 执行转换* @param initKettleParam* @param ktrFilePath* @return*/public static boolean runKettleTransfer(Map<String, String> initKettleParam, String ktrFilePath) {Trans trans = null;String uuid = UUID.randomUUID().toString();logger_info.info("ExecKettleUtil@runKettleTransfer:" + uuid + " {ktrFilePath:" + ktrFilePath + "}");try {// 初始化KettleEnvironment.init();EnvUtil.environmentInit();TransMeta transMeta = new TransMeta(ktrFilePath);// 转换trans = new Trans(transMeta);// 初始化trans参数,脚本中获取参数值:${variableName}if (initKettleParam != null) {for (String variableName : initKettleParam.keySet()) {trans.setVariable(variableName, initKettleParam.get(variableName));}}// 执行转换trans.execute(null);// 等待转换执行结束trans.waitUntilFinished();if (trans.getErrors() > 0) {logger_info.info("ExecKettleUtil@runKettleTransfer:" + uuid + " 执行失败");} else {logger_info.info("ExecKettleUtil@runKettleTransfer:" + uuid + " 执行成功");}return true;} catch (Exception e) {logger_info.error("ExecKettleUtil@runKettleTransfer:" + uuid, e);return false;}}}

java调用kettle脚本ktr相关推荐

  1. java 调用kettle job 传参_java调用kettle向job(任务)和transformation(转换)传递参数实例...

    虽然网上文章有说java可以传递参数给kettle,不过只找到了传递参数给转换的文章,没有讲参数传递给job,kettle中如何使用java传递的参数.今天就以上问题,一并共享. /** * 本测试类 ...

  2. java调用kettle批量执行

    java调用kettle批量执行 之前只做了一个java调用单一ktr的例子,在用web程序控制ETL数据抽取过程的时候,难免会遇到要执行一个复选框列表的ktr,那么前段传过来的就不仅仅是一个ktr: ...

  3. java无阻塞执行脚本,JAVA调用Shell脚本-及阻塞的解决方法

    JAVA调用Shell脚本--及阻塞的解决办法 用java调用shell,使用 Process p=Runtime.getRuntime().exec(String[] cmd); Runtime.e ...

  4. Java调用python脚本

    Java调用python脚本 最近也是刚开始学python,所以这里写了一个简单的小方法用Java来调用python脚本.后期再进行更新. 1.Java启动程序的方法 在Java中提供了两种方法来启动 ...

  5. java 调用python脚本过程_通过Java调用Python脚本

    在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...

  6. java 调用linux 脚本并获取返回值

    大家好,我是烤鸭: 今天分享下java 调用 shell脚本 并获取返回值. 代码实践 String cmd = "df -h"; StringBuffer sb = new St ...

  7. java 调用groovy脚本,实现多个sql按指定逻辑运行,可做报表预聚合

    java 调用groovy脚本,实现多个sql按指定逻辑运行,可做报表预聚合 1.引入pom <dependency><groupId>org.codehaus.groovy& ...

  8. java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...

    常见的java调用python脚本方式 通过jython提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 通过jython提供的类库实现 通过jython实现的话,我 ...

  9. java调用kettle自定义kettle.properties配置文件路径

    java调用kettle自定义kettle.properties配置文件路径 默认路径 java调用kettle的jar包时,在初始化环境的时候,会在指定路径创建并加载kettle的kettle.pr ...

  10. 使用GraalVM实现java调用python脚本

    背景说明 在很多场景下,我们都有从java调用脚本的功能,常用的有groovy脚本,pyhon脚本和js等.在上篇中,列举了java调用pyhton脚本的几种方案,并最终选取了JEP的方式,但是随着业 ...

最新文章

  1. LinkedIn工程经理眼中的数据世界格局
  2. Android服务之Service(其一)
  3. Python魔法方法(magic method)细解几个常用魔法方法(下)
  4. 优必选发布新一代大型机器人Walker X
  5. 【优化选址】基于matlab粒子群算法求解充电站规划优化问题【含Matlab源码 664期】
  6. Dynamics AX2012 标准权限控制工作原理
  7. 大数据中心大数据资源平台建设方案
  8. 《如何克服社交焦虑》- (美)埃伦·亨德里克森著;冯晓霞译
  9. 各种单片机芯片封装形式
  10. Windows10软件显示模糊解决方案
  11. 计算机中心英语怎么说,计算机中心,computer center,音标,读音,翻译,英文例句,英语词典...
  12. 如何快速取消关注B站(哔哩哔哩)所有up主?(Javascript实现)
  13. 货郎问题与计算复杂性
  14. 一个完整的Windows驱动程序示例(应用与内核通信)
  15. 郑小林——“浙大系”隐私计算产学研创新先锋
  16. 2023 年值得推荐的 Vue 库
  17. wsdl2java asmx_在WebService asmx中格式化SOAP消息
  18. 潘爱民:Windows系统程序员的“内功”修炼
  19. 小安安日本文化行16 母亲节
  20. linux下面安装geant4,Ubuntu 12.04 下Geant4的安装

热门文章

  1. cpu第几代计算机,怎么看cpu是几代的,来看看你的CPU是几代的?
  2. linux强制移除pdf密码,linux-使用PDFtk删除pdf文件的最后一页?
  3. python花瓣长度和花瓣宽度散点图鸢尾花_matplotlib可视化操作及案例分析
  4. JavaCV 制作字符画
  5. 《领导力21法则》-读书笔记
  6. 笔记本计算机无法开机怎么办,笔记本开机没反应,详细教您笔记本电脑开不了机怎么处理...
  7. Redis源码解读(二十五)——集群模式—failover
  8. 优盘突然显示无法在此计算机,复制文件到U盘时突然无法复制提示磁盘被写保护该如何修复...
  9. 高科技还是“智商税”?你怎么选
  10. 我们为什么教不好自己的孩子?(云中逸客)