2017-01-16 57 views
0

在我的转换中,我想拥有一个动态数据库连接属性,如主机名/端口/用户名和密码,并且我的bash配置文件已经包含这些信息。我如何通过转换来访问这些bash配置文件变量?在Pentaho Kettle中访问bash变量

谢谢,

Thusira。

+0

向我们展示您的'.bash_profile',以及您希望如何以最少的输入示例和输出来检索信息? – Inian

+0

@Inian,我的.bash_profile包括以下项目, DB_PORT = 27017 DB_HOST =本地主机 DB_NAME =测试 DB_PASSWORD = welcome1! DB_USERNAME = testUser –

+0

以上评论是不必要的和不尊重的。你的问题没有适当的研究努力,只是要求普通的_code_,而且它只是_NOT_遵守[我如何问一个好问题?](http://stackoverflow.com/help/how-to-ask)并没有一个可验证的输入,即假设我们有一个解决方案,我们如何测试它?在提问之前,请仔细阅读[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。祝你好运! – Inian

回答

0

声明pentaho变量的最好方法是将它们添加到$HOME/.kettle/kettle.properties文件中。

这些变量可以在作业/转换中使用${..}就像bash变量一样访问。

实施例,

kettle.properties

DB_HOST=xx.xx.xx.xx 

在变换,

${DB_HOST} 
+0

谢谢,我试过了。但是,如果我使用这种方法,我可能必须为每个环境使用不同的属性文件。因为我有一个运行在这些bash变量上的应用程序。我正在考虑重新使用相同的方式进行转换。所以当变量值发生变化时,我不必更改2个地方。你有什么想法。? –

+0

如果更新变量2文件是你的问题,你可以很好地使'kettle.properties'来读取环境中的变量。 – franklinsijo

+0

绝对是。谢谢。 –

0

用户定义的Java-表达步骤可检索所有的环境变量:

字符串值= java.lang.String.join("|", System.getenv().values())

字符串名称= java.lang.String.join("|", System.getenv().keySet())

现在拆分场对行使用编号启用将准备在ROWNUMBER最终产生与字段(名称,值)流的融合连接。

不要害羞。