java调用kettle批量执行
之前只做了一个java调用单一ktr的例子,在用web程序控制ETL数据抽取过程的时候,难免会遇到要执行一个复选框列表的ktr,那么前段传过来的就不仅仅是一个ktr;那就是一个未知数目的ktr列表了,思想就是封装:遍历:赋值:执行;
1 package kettle; 2 3 //需要导入的包 4 5 import java.util.ArrayList; 6 import org.pentaho.di.core.KettleEnvironment; 7 import org.pentaho.di.trans.TransMeta; 8 import org.pentaho.di.trans.Trans; 9 public class ExecuteBatchLocalTran { 10 /** 11 * java调用本地的tran并且传递参数(包括给SQL传参) 12 */ 13 14 public static void main(String arg[]) throws Exception 15 { 16 /*前台页面传递的参数*/ 17 String idname="7";//参数值 18 String filename1="./test1.ktr";//ktr路径 19 String filename2="./test2.ktr";//ktr路径 20 KettleEnvironment.init();//初始化kettle环境 21 /*定义文件路径,模型元数据,模型三个容器*/ 22 ArrayList<String> list1=new ArrayList<String>(); 23 ArrayList<TransMeta> list2=new ArrayList<TransMeta>(); 24 ArrayList<Trans> list3=new ArrayList<Trans>(); 25 /*添加文件对象*/ 26 list1.add(filename1); 27 list1.add(filename2); 28 //System.out.print("=======================1:"+list1.get(0)); 29 //System.out.print("=======================2:"+list1.get(1)); 30 /*遍历文件对象,创建转换元数据对象*/ 31 for(int i=0;i<list1.size();i++) 32 { 33 TransMeta transMeta = new TransMeta(list1.get(i));//new tran的源数据对象 34 list2.add(transMeta); 35 } 36 /*遍历转换元数据对象,创建转换对象*/ 37 for(int j=0;j<list2.size();j++) 38 { 39 Trans trans = new Trans(list2.get(j));//创建tran对象 40 list3.add(trans); 41 } 42 /*遍历转换对象,执行列表转换*/ 43 for(int h=0;h<list3.size();h++) 44 { 45 Trans trans =list3.get(h);//创建tran对象 46 trans.setVariable("idname",idname);//传参给对象 47 trans.prepareExecution(null);//异常处理 48 trans.startThreads();//开始执行 49 trans.waitUntilFinished();//等待执行完毕 50 51 if(trans.getErrors()!=0) 52 { 53 System.err.println("Error encountered!"); 54 } 55 else 56 { 57 System.out.println("Success"); 58 } 59 60 } 61 62 63 64 65 66 67 } 68 69 }
转载于:https://www.cnblogs.com/wxjnew/archive/2013/05/30/3108104.html
java调用kettle批量执行相关推荐
- java 调用kettle job 传参_java调用kettle向job(任务)和transformation(转换)传递参数实例...
虽然网上文章有说java可以传递参数给kettle,不过只找到了传递参数给转换的文章,没有讲参数传递给job,kettle中如何使用java传递的参数.今天就以上问题,一并共享. /** * 本测试类 ...
- java调用kettle自定义kettle.properties配置文件路径
java调用kettle自定义kettle.properties配置文件路径 默认路径 java调用kettle的jar包时,在初始化环境的时候,会在指定路径创建并加载kettle的kettle.pr ...
- java调用kettle例子_Kettle API - Java调用示例
Kettle API - Java调用示例 对向前兼容性的推荐:如果想要动态地创造Transformation (例如:从元数据),使用XML文件方法(KTR)而不是使用API.XML文件兼容Kett ...
- java调用cmd命令执行mysql命令
java调用cmd命令在linux执行mysql数据恢复命令 Statement statement = con.createStatement(); ResultSet resultsql = st ...
- Java调用Kettle的作业和转换
文章目录 一.准备工作 二.使用步骤 1.引入Jar包 2.创建工具类 三.可能出现的问题 总结 一.准备工作 1.jdk必须是1.8以上. 2.创建好的Kettle的作业和转换文件 二.使用步骤 1 ...
- Java 调用Shell脚本执行 SCP命令提示Authorized users only. All activity may be monitored and reported.
近期做了个小项目主要是关于数据处理这方面的. 在Java后端调用服务器上Shell脚本,而Shell脚本执行时一条Scp执行结果的提示报 Authorized users only. All acti ...
- java调用kettle连hive_使用java连接hive,并执行hive语句详解
安装hadoop 和 hive我就不多说了,网上太多文章 自己看去 首先,在机器上打开hiveservice hive --service hiveserver -p 50000 & 打开50 ...
- java调用Kettle返回JSON结果
所需的jar包,目前我掌握的程度只用这几个就OK了. 第一种 直接调用本地ktr,把结果返回成JSON , 但只支持写死的SQL.(因为JsonOutput控件获取字段的原因.) public cl ...
- 利用Java调用openSMILE批量处理音频文件
文章目录 处理单条数据 批量处理 本文作者:合肥工业大学 管理学院 qianyang: 内容可能有不到之处,欢迎交流. 处理单条数据 最近,在使用openSMILE处理音频数据.关于openSMILE ...
最新文章
- FileSystemWatcher使用方法具体解释
- golang 遍历文件夹和文件
- 恒驰机器人_恒大汽车基地:2545台机器人为恒驰“效力”
- 4月 .NET 线上 Meetup,快来报名
- activemq网络桥接_ActiveMQ –经纪人网络解释
- python面向对象(下)
- 如何查看Windows 10系统版本号?
- SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.
- Editplus破解
- 吐血总结:Python学习方向、发展副业求职全攻略(自学Python做副业,教你如何月入10000+)
- NVIDIA显卡型号有哪些?怎么知道自己电脑的型号?
- zheng-环境搭建及系统部署文档
- Marshmallow及ORM小结
- 函数式程序设计为什么至关重要
- 《保卫萝卜》项目实践(2)
- 如何利用python将NWPU VHR-10目标检测遥感数据集的格式转换成VOC目标检测数据集的格式
- 17.Future 介绍与主要用法
- Java读文件和写文件
- Log4j又发新版2.17.0,只有彻底搞懂漏洞原因,才能以不变应万变,
- 学术 | ChatGPT负责人John Schulman:如何做好研究
热门文章
- LeetCode 729. 我的日程安排表 I(set 二分查找)
- MySQL 增加、更新、删除
- LeetCode 392. 判断子序列(双指针二分查找)
- 大锅菜机器人_炒菜机或者炒菜机器人有好用的吗 - 玩主论坛
- can协议crc计算_详解CAN/CAN FD通信中的循环冗余校验(CRC)方法
- 微信小程序使用函数的方法
- 蛤蟆 Oracle,47.蛤蟆笔记go——go连接Oracle
- 12c oracle 激活_Oracle 12C 安装教程
- qt如和调用linux底层驱动_擅长复杂硬件体系设计,多核系统设计,以及基于RTOS或者Linux,QT等进行相关底层驱动。...
- 拍不完的脑袋:推荐系统打压保送重排策略