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 }

posted on 2013-05-30 14:22 kingstudy 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/wxjnew/archive/2013/05/30/3108104.html

java调用kettle批量执行相关推荐

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

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

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

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

  3. java调用kettle例子_Kettle API - Java调用示例

    Kettle API - Java调用示例 对向前兼容性的推荐:如果想要动态地创造Transformation (例如:从元数据),使用XML文件方法(KTR)而不是使用API.XML文件兼容Kett ...

  4. java调用cmd命令执行mysql命令

    java调用cmd命令在linux执行mysql数据恢复命令 Statement statement = con.createStatement(); ResultSet resultsql = st ...

  5. Java调用Kettle的作业和转换

    文章目录 一.准备工作 二.使用步骤 1.引入Jar包 2.创建工具类 三.可能出现的问题 总结 一.准备工作 1.jdk必须是1.8以上. 2.创建好的Kettle的作业和转换文件 二.使用步骤 1 ...

  6. Java 调用Shell脚本执行 SCP命令提示Authorized users only. All activity may be monitored and reported.

    近期做了个小项目主要是关于数据处理这方面的. 在Java后端调用服务器上Shell脚本,而Shell脚本执行时一条Scp执行结果的提示报 Authorized users only. All acti ...

  7. java调用kettle连hive_使用java连接hive,并执行hive语句详解

    安装hadoop 和 hive我就不多说了,网上太多文章 自己看去 首先,在机器上打开hiveservice hive --service hiveserver -p 50000 & 打开50 ...

  8. java调用Kettle返回JSON结果

    所需的jar包,目前我掌握的程度只用这几个就OK了. 第一种  直接调用本地ktr,把结果返回成JSON , 但只支持写死的SQL.(因为JsonOutput控件获取字段的原因.) public cl ...

  9. 利用Java调用openSMILE批量处理音频文件

    文章目录 处理单条数据 批量处理 本文作者:合肥工业大学 管理学院 qianyang: 内容可能有不到之处,欢迎交流. 处理单条数据 最近,在使用openSMILE处理音频数据.关于openSMILE ...

最新文章

  1. FileSystemWatcher使用方法具体解释
  2. golang 遍历文件夹和文件
  3. 恒驰机器人_恒大汽车基地:2545台机器人为恒驰“效力”
  4. 4月 .NET 线上 Meetup,快来报名
  5. activemq网络桥接_ActiveMQ –经纪人网络解释
  6. python面向对象(下)
  7. 如何查看Windows 10系统版本号?
  8. SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.
  9. Editplus破解
  10. 吐血总结:Python学习方向、发展副业求职全攻略(自学Python做副业,教你如何月入10000+)
  11. NVIDIA显卡型号有哪些?怎么知道自己电脑的型号?
  12. zheng-环境搭建及系统部署文档
  13. Marshmallow及ORM小结
  14. 函数式程序设计为什么至关重要
  15. 《保卫萝卜》项目实践(2)
  16. 如何利用python将NWPU VHR-10目标检测遥感数据集的格式转换成VOC目标检测数据集的格式
  17. 17.Future 介绍与主要用法
  18. Java读文件和写文件
  19. Log4j又发新版2.17.0,只有彻底搞懂漏洞原因,才能以不变应万变,
  20. 学术 | ChatGPT负责人John Schulman:如何做好研究

热门文章

  1. LeetCode 729. 我的日程安排表 I(set 二分查找)
  2. MySQL 增加、更新、删除
  3. LeetCode 392. 判断子序列(双指针二分查找)
  4. 大锅菜机器人_炒菜机或者炒菜机器人有好用的吗 - 玩主论坛
  5. can协议crc计算_详解CAN/CAN FD通信中的循环冗余校验(CRC)方法
  6. 微信小程序使用函数的方法
  7. 蛤蟆 Oracle,47.蛤蟆笔记go——go连接Oracle
  8. 12c oracle 激活_Oracle 12C 安装教程
  9. qt如和调用linux底层驱动_擅长复杂硬件体系设计,多核系统设计,以及基于RTOS或者Linux,QT等进行相关底层驱动。...
  10. 拍不完的脑袋:推荐系统打压保送重排策略