select语句中的PDI参数

时间:2014-05-19 08:20:41

标签: html sql database pentaho kettle

我想问一个关于Pentaho的问题。我正在使用Pentaho data Integration(水壶)。我想在select语句中使用参数。我搜索了各种论坛,但没有找到任何解决方案。我的问题是我想从不同的数据库中获取结果。如何使用参数从2个或更多数据库中获取数据? 我有两个转变。

  1. select catalog_name from information_schema.schemata where catalog_name like "%db"
  2. select data_name from ${catalog_name}.dbo.database_name
  3. 有错误说Syntax error or access violation

2 个答案:

答案 0 :(得分:2)

以下解决方案通过调用第一个SQL语句并使用该语句的结果集的元素作为参数来模拟您的任务来调用第二个SQL语句。

Transformation and details of first table input

在第二个表输入中,?用作参数的占位符。 Kettle似乎按顺序映射传入的字段。在这种情况下,字段schema_name是第一个字段,因此它将被分配给第一个参数。将相应地映射任何其他传入字段。请注意,SQL语句中的传入字段数和已使用参数的数量必须匹配。否则会引发运行时错误。另请注意,我的解决方案中的?可能特定于MySQL语法。从SQL语句中的命名模式,我假设您使用的是MS SQL Server。因此实际占位符的名称可能不同。

第二个表输入必须配置如下:

Configuration Details of table input 2

请注意,在这种情况下,没有必要在脚本中标记替换变量,因为参数不被视为变量。但是,必须正确设置从步骤插入数据和每行执行的条目。

答案 1 :(得分:0)

听起来你已经做好了准备。您的作业具有查询1的第一个转换,并将输出发送到作业结果(行结果)。然后,对于发现将模式名称作为参数或变量传递的每个模式,运行一次变换#2。

如果其中任何一项不正确,请说明您实际在做什么。

我猜你唯一错过的就是在变换2中检查表输入的Replace variables in script框。

如果不是这种情况,请再次添加更多细节。