从命令行启动时无法覆盖Talend作业上下文参数

时间:2014-01-07 16:43:23

标签: parameters etl talend data-integration

我目前正在尝试从命令行运行Talend作业。由于我的生产环境参数与我在本地工作站上的参数不同,因此在目标服务器上启动作业时,我必须提供上下文参数

kaffein@coffeeshop:~$ ./job_run.sh --context_param port=1234 --context_param server=myserver

当我导出作业时,Talend Open Studio(用于数据集成)为我的所有子作业文件夹生成 Default.properties 文件。这些文件包含本地默认上下文参数

使用生产参数启动我的工作(如上所示)然后失败,因为似乎“local”参数不能被提供的命令行参数(--context_param arguments)覆盖。

有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

Implicit context load的{​​{1}}下使用Job Settings可能更容易。

在这里,您可以定义环境参数(如连接设置)的文件(例如CSV),只要它们共享相同的文件路径,您就可以将不同的上下文变量放在不同环境的文件中,并且Talend将它们作为工作的一部分加载。

现在,当您运行作业时,它应该使用从文件加载的特定于环境的上下文变量。

答案 1 :(得分:1)

如果您有DEV,UAT,PROD等上下文组,您可以在shell脚本中设置此参数 - 所以如果您想要PROD,您可以将此参数添加到您的shell

--context=PROD

这将从您的PROD上下文属性文件中加载您的PROD参数,在我们修改了所有shell脚本的每个构建中,添加一个检查以确定它所处的环境,然后传递正确的上下文。

答案 2 :(得分:1)

我有类似的问题,也选中了复选框进行传播,但后来发现了这个

  

将参数传递给子作业

     

在结构化应用程序中,Job可以调用另一个Job,它就是   将参数传输到子作业所必需的。在Talend Open Studio   这个任务很简单。当您创建子作业时(即调用的作业)   另一项工作)只需单击其组件选项卡并确保传输   检查整个上下文。

请注意,组件标记存在于父JOB中。

我在这里找到了解决方案http://www.robertomarchetto.com/how_to_parameter_values_talend_job_command_line

为我工作。

罗布