使用Pentaho中的变量为两个不同的数据集定义数据库连接

时间:2019-04-08 15:34:29

标签: pentaho pentaho-spoon pentaho-data-integration

我需要使用一个比较两个数据集的变量连接到两个不同的数据集。我正在使用两个不同的表输入步骤,其中数据库连接名,主机名是硬编码的。 我不想使用硬编码,而是要使用定义这些连接并且应该能够连接到它们的变量enter image description here

2 个答案:

答案 0 :(得分:1)

您可以在.kettle目录中的kettle.properties文件中定义变量。然后,您可以在数据库连接设置中使用这些变量。

您还可以在自己的.properties文件中定义变量,并使用“设置变量”作业条目读取它们。

将变量设置为:

db_name.host=localhost
db_name.db=databasename
db_name.user=username

然后使用${db_name.host}等格式访问作业/转换中的那些变量。

答案 1 :(得分:0)

使用JNDI设置所有连接参数:

(1)编辑文件:data-integration/simple-jndi/jdbc.properties,然后添加数据库连接字符串,例如:

db1/type=javax.sql.DataSource
db1/driver=com.mysql.jdbc.Driver
db1/url=jdbc:mysql://127.0.0.1:3305/mydb
db1/user=user1
db1/password=password1 
db2/type=javax.sql.DataSource
db2/driver=com.mysql.jdbc.Driver
db2/url=jdbc:mysql://mydbserver:3306/mydb
db2/user=user2
db2/password=password2 

在这里,我们创建了两个JNDI名称db1db2,可以在PDI作业/转换中使用它们。

(2)在PDI作业/转换中,通过菜单'编辑'-> mydb-> Settings...选项卡添加参数,即Parameters。如果使用多个数据库参数,则可以添加更多这样的数据库参数。

(3)在Table Input步骤中,单击Edit...New..按钮,然后在即将出现的对话框中,将Access:框中的项目切换为JNDI然后在右上角的JNDI name中添加$ {mydb}。您还可以使用我们在(1)中定义的纯文本db1db2来标识数据库连接。

使用JNDI来管理数据库连接,我们只需使用参数就可以在登台数据库和生产数据库之间进行切换。您可以执行与PRD类似的操作。