java调用kettle工作脚本传参问题总结

本文主要介绍了在Java中调用Kettle工作脚本时遇到的数据库连接错误,问题根源在于工作脚本的参数列表。通过对比有参数列表和无参数列表的差异,分析了参数传递的细节,包括setVariables与setParameters的区别。解决方案是统一使用addParameterDefinition定义缺失的参数键,然后用setParameterValue赋值,确保传参的兼容性。
摘要由CSDN通过智能技术生成

java调用kettle工作脚本报数据库连接错误

场景: kettle工具设计好了一个工作脚本,此工作脚本里面的连接数据库都是动态参数(如:${db_username}),java调用这个kettle的工作脚本时报数据库连接错误,但是将java传参的参数列表打印出来后,放到kettle工具里面去作为初始化参数去直接执行工作脚本却是成功的。

分析:

  1. 先设计了一个最简单的无参的工作脚本,java调用是成功的,可以知道应该是参数的问题。
  2. 然后,又设计了一个有参的工作脚本,但是没有直接在工作脚本那里初始化参数列表,java调用任然是成功的, 然后就觉得很奇怪了,为什么联调的那个脚本就不成功呢?
    这时候很难想到会是工作脚本那里的初始化参数列表导致的问题。此时就到网上各种搜资料,但是搜了半天,无果(网上这方面的资料太少)。

最后,只能打印job的参数列表,有Variables与Parameters两种,虽然资料上都是直接setVariables,但是还是都打印出来看看。然后就比较正常跑起来来的脚本与那个错误脚本的打印区别。最后发现是jobMeta的listParameters 的不同,有初始化参数列表的脚本这里是有值的,无参数列表这里是没有值的,然后就要求徐康将初始化参数列表都删除掉,果然,java调用就成功了。
此时,才知道是这个有参数列表和无参数列表的问题

            String[] arr1 = jobMeta.listVariables();
            String[] arr2 = jobMeta.listParameters();
            String[] arr3 = job.listVariables();
            String[] arr4 = job.listParameters();
            System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++关键key");
            System.out.println("---------------jobMeta的listVariables,按分号分隔");
            for (String s1 
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值