首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过脚本将环境变量传递给Pentaho水壶转换

通过脚本将环境变量传递给Pentaho水壶转换
EN

Stack Overflow用户
提问于 2018-09-03 15:30:09
回答 5查看 5.3K关注 0票数 4

我需要参数化我的水壶作业和转换中的所有变量(这些作业将在AWS中运行,所有参数都作为环境变量传递)。

作业及其附属转换中的连接、路径和各种其他参数使用${SOURCE_DB_PASSWORD},${OUTPUT_DIRECTORY}样式。

当我在Data Integration UI中将它们设置为环境变量时,它们都可以工作,并且作业在UI工具中成功运行。当我从bash脚本运行它们时:

代码语言:javascript
复制
#!/bin/sh
export SOURCE_DB_HOST=services.db.dev
export SOURCE_DB_PORT=3306

kitchen.sh -param:SOURCE_DB_PORT=$SOURCE_DB_PORT -param:SOURCE_DB_HOST=$SOURCE_DB_HOST -file MY_JOB.kjb

作业和它调用的转换不是,而是来获取变量。错误是:

代码语言:javascript
复制
Cannot load connection class because of underlying exception: 'java.lang.NumberFormatException: For input string: "${SOURCE_DB_PORT}"'

因此,在不使用jndi文件或kettle.properties的情况下,我需要某种方法将环境变量映射到PDI作业和转换中的参数/变量。

Mac OS X 10.13上的PDI版本8.1

EN

回答 5

Stack Overflow用户

发布于 2018-09-04 07:52:04

在命令行上使用-param:SOURCE_DB_HOST=value语法,在作业和转换中使用${SOURCE_DB_HOST}语法是正确的方法。

在转换中您需要做的(但不是对于它所显示的作业)是显式地向参数添加到转换属性(-T或on mac -T在转换工作区中)。附加屏幕截图。

然后直接从shell脚本运行作业或转换。

票数 3
EN

Stack Overflow用户

发布于 2018-09-03 16:11:32

也许问题不是由参数引起的,而是由Table输入引起的。你能检查一下Replace variables in script是否被选中了吗?

票数 1
EN

Stack Overflow用户

发布于 2019-03-14 00:17:58

我只是在试着让这些东西正常工作。只有在作业规范中指定参数,然后显式地将它们向下传递给任何需要它们的转换时,-param (或/param)命令行标志才会起作用。

要在我使用的作业中获得普遍可访问的系统属性,请执行以下操作:

代码语言:javascript
复制
set "OPT=-Dname1=value -Dname2=value"

在打电话给厨房之前。这会将-D标志放入java选项中。希望这将与数据库规范一起工作。

当然,您可以将它们放在kettle.properties中,但如果您想在不同的环境中运行,就会变得混乱。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52145028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档