java调用kettle向job(任务)和transformation(转换)传递参数实例
来源:互联网 发布:易语言玫瑰花表白源码 编辑:程序博客网 时间:2024/06/04 20:01
最近要对一个系统的数据同步到另一个系统中,要求新系统的数据结果完成之后,实时同步到另一个系统数据表中。
也就是动态的传一个关联的ID。由于旧系统是vb做的,无法提供webservice接口,并且同步的表涉及到十几张表,并且两个系统表结构完全不一样,所以想到了kettle。
java集成kettle网上有现成的实例,很简单。如:http://bakcom.iteye.com/blog/1399587
也就是动态的传一个关联的ID。由于旧系统是vb做的,无法提供webservice接口,并且同步的表涉及到十几张表,并且两个系统表结构完全不一样,所以想到了kettle。
java集成kettle网上有现成的实例,很简单。如:http://bakcom.iteye.com/blog/1399587
虽然网上文章有说java可以传递参数给kettle,不过只找到了传递参数给转换的文章,没有讲参数传递给job,kettle中如何使用java传递的参数。今天就以上问题,一并共享。
- /**
- * 本测试类慎用!!!!!!!
- *
- * @param args
- */
- public static void main(String[] args) {
- String datetime = "2014-12-19 23:20:45";
- String[] params = {"707", datetime}; // 传递参数
- String path = "F:\\job7.kjb";
- // runTransfer(params, path);
- runJob(params, path);
- // runJob();
- // jbResource();
- }
- /**
- * 运行转换文件方法
- * @param params 多个参数变量值
- * @param ktrPath 转换文件的路径,后缀ktr
- */
- public static void runTransfer(String[] params, String ktrPath) {
- Trans trans = null;
- try {
- // // 初始化
- // 转换元对象
- KettleEnvironment.init();// 初始化
- EnvUtil.environmentInit();
- TransMeta transMeta = new TransMeta(ktrPath);
- // 转换
- trans = new Trans(transMeta);
- // 执行转换
- trans.execute(params);
- // 等待转换执行结束
- trans.waitUntilFinished();
- // 抛出异常
- if (trans.getErrors() > 0) {
- throw new Exception(
- "There are errors during transformation exception!(传输过程中发生异常)");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * java 调用 kettle 的job
- *
- * @param jobname
- * 如: String fName= "D:\\kettle\\informix_to_am_4.ktr";
- */
- public static void runJob(String[] params, String jobPath) {
- try {
- KettleEnvironment.init();
- // jobname 是Job脚本的路径及名称
- JobMeta jobMeta = new JobMeta(jobPath, null);
- Job job = new Job(null, jobMeta);
- // 向Job 脚本传递参数,脚本中获取参数值:${参数名}
- // job.setVariable(paraname, paravalue);
- job.setVariable("id", params[0]);
- job.setVariable("dt", params[1]);
- job.start();
- job.waitUntilFinished();
- if (job.getErrors() > 0) {
- throw new Exception(
- "There are errors during job exception!(执行job发生异常)");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">以上是片段。实现了调用任务和转换的方法,我只给出了调用任务和转换文件的方法,连接数据库的在此略过。</span>
下面就是如何使用java传递的参数了。
转换的网上有例子,转换工作台,打开输入,找到“获取系统信息”
进行变量定义,选择命令参数1。。。n即可
就可以引用我示例中的1,2参数了。
但是我们的迁移工作是要按顺序执行的,调用转换不够用,需要job来定义执行顺序,
比如上面的转换作为第一步,操作完进行其他步骤,那么在这个基础上,可以画一个job
这时候问题来了,我们要活得java的数据,同时这个job需要把参数传递给test2转换使用。
其实很简单,点开test2,切换到参数选型,将java定义的参数写进去,记住带{}
这样就大功搞成了。java已经能够顺利的将值传递给job,job可以顺利的将值传递给转换。
点击run this job 在variable中定义参数名称跟java传递的参数一致,可以写值进行测试。
注意事项:任务和转换要存成文件格式,任务中引用的转换也要是文件格式,
否则就都需要数据库支撑,数据库方法调用了
1 0
- java调用kettle向job(任务)和transformation(转换)传递参数实例
- java调用kettle向job(任务)和transformation(转换)传递参数实例
- java通过kettle的API调用已经创建好的转换(transformation)或任务(job)
- Kettle之命令行执行转换(transformation)
- BI: Kettle获取命令行参数和Java调用Kettle传递参数
- [翻译]KETTLE JAVA API :编程定制自己的Kettle转换(transformation)
- java调用kettle中的job和trans
- Java调用Kettle执行任务或转换
- Java程序调用kettle中的job(.kjb)和Trans(.ktr)
- Quartz向JOB传递参数
- ETL工具Pentaho Kettle的transformation和job集成
- BI:Java调用Kettle执行任务或转换
- kettle ETL java 调用 kettle job 或 transfer
- kettle ETL java 调用 kettle job 或 transfer
- quartz—向job动态传递参数
- quartz—向job动态传递参数
- windows下任务计划程序调用kettle job
- JAVA中函数调用参数传递的理解(值传递和引用传递的理解)
- SSH Warning: the RSA host key for differs from the key for the IP address
- 异步HttpAsyncClient框架的学习和使用
- dataguard相关进程(RFS,LNSn,MRP,LSP)和参数配置
- 【07】Spinner使用SimpleAdapter
- 足球预测算法分析之埃罗预测
- java调用kettle向job(任务)和transformation(转换)传递参数实例
- 中序遍历二叉树及求树高
- Linux内核中断和异常分析(上)
- dataguard 日志的应用
- 6.leetcode题目14: Longest Common Prefix
- ASP.NET MVC5 默认用户管理
- ConcurrentHashMap到底是什么?
- 使用Bmob云端服务器模拟简单的注册登录
- Eclipse 安装 Python插件