如何动态传递数据库连接属性以连接到 pentaho 中的不同数据库

Posted

技术标签:

【中文标题】如何动态传递数据库连接属性以连接到 pentaho 中的不同数据库【英文标题】:how to pass database connection properties dynamically to connect to different database in pentaho 【发布时间】:2014-08-04 14:00:12 【问题描述】:

我正在使用kettle转换将CSV文件数据存储到数据库。我的客户要求是将相同的CSV文件动态存储到不同的数据库(例如:Oracle和postgres)中。如何实现这一点?我已经尝试使用kettle Job并设置变量方法。它对我不起作用。如何将数据库连接属性作为参数动态传递给转换以连接到不同的数据库。请帮我解决这个问题。

【问题讨论】:

【参考方案1】:

要连接到相同类型的不同数据库,您只需设置相关属性(主机、端口、数据库名称、架构、用户名、密码以及连接所需的任何内容)。

但是,如果您的数据库类型发生变化,您需要建立一个通用数据库连接,您需要在其中提供 JDBC 驱动程序的类、完整的连接 URL(包括参数)、用户名和密码。

通过更改这些变量,您可以切换目标数据库。

请记住,不能在同一转换中设置和使用变量。由于转换步骤的并行性质,您需要在转换 1 中设置变量值,然后在转换 B 中使用它们并将两个转换都包含在父作业中。最佳变量范围是“在根作业内有效”。

【讨论】:

如果答案是正确的,你应该接受它。投赞成票只是礼貌。 您如何处理通用数据库连接?你是怎样做的?你能提供更多细节吗?谢谢【参考方案2】:

实际上,对于在多个 KETTLE_HOME 位置使用多个 shared.xml 文件的不同数据库可能工作得很好,我没有时间彻底测试,但我确实使用 KETTLE_HOME 和 shared.xml 进行一次性运行,数据库是不过,至少根据 connection.type 相同。

【讨论】:

以上是关于如何动态传递数据库连接属性以连接到 pentaho 中的不同数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python形成地址字符串以连接到安慰

Laravel 5 如何配置 Queue 数据库驱动程序以连接到非默认数据库?

蓝牙:如何使用 Bluez 创建一个套接字以连接到具有特定 UUID 的服务?

从 Pentaho 数据集成连接到 MongoDB

从 XML 文件中读取网络凭据以连接到 TFS 服务器

ADMC0016E: 系统无法创建 SOAP 连接器以连接到端口 16313 上的主机 xxx