Pentaho动态地在循环中替换表名

时间:2018-04-03 15:39:46

标签: pentaho kettle pdi spoon

我目前有一个包含2个表输入和一个Merge Rows(Diff)的转换设置,两个表输入中的SQL select语句都是常量,除表名外它们不会改变。所以我有:

CASCADE

我有大约100个表,我不希望每次迭代都手动输入表名,特别是因为这是自动化...

实现这一目标的最佳方法是什么?有没有什么方法可以像具有所有表名的CSV文件一样读取并以这种方式循环?任何帮助表示赞赏..

2 个答案:

答案 0 :(得分:1)

这也是我以前必须要做的事情! 您可以使用变量和作业对上一步的每一行执行一次。

  1. 创建父作业以托管这些步骤
  2. 创建一个转换,从某个地方获取表名称'例如。 CSV文件或数据库查询 - 对具有相同列名的表的all_tables进行选择可能是一直有效的方法...
  3. 在同一转换中,使用复制行生成结果以将数据推回作业
  4. 创建一个新的子作业',每行执行一次,并从“获取数据”中获取一个跃点。进入主要工作
  5. 在子作业中,创建两个转换,一个用于设置结果字段中的变量,另一个用于执行选择
  6. 在您的选择查询中,选中“替换变量”框。并将与您的设置变量同名的变量放入SQL中,作为$ {yourVariableHere}
  7. 我已经将它放在下面的图片中,希望对您有所帮助。 enter image description here

答案 1 :(得分:0)

如果表的布局/元数据都相同,则动态sql行步骤是一个不错的选择。