2016-08-18 52 views
1

我有很多数据库(+100),每个数据库都有相同的结构和不同的连接。 我正在使用Kettle在不同数据库中运行转换以创建数据仓库。对水壶上的多个数据库连接运行相同的转换

如何使用不同的连接自动运行相同的转换?

我已经证明了这个Pass DB Connection parameters to a Kettle a.k.a PDI table Input step dynamically from Excel但它只接受csv中的一行。

我应该创建一个循环,还是我需要创建一个脚本?

任何帮助,将不胜感激。 (对不起,我的英语)

+0

“但它只接受csv中的一行” - 这是什么意思?它可以有+100行(每行保存到某个数据库的连接细节)。在变量中设置连接详细信息并在运行之后运行子信息。在目录$ KETTLE_HOME/example中有一个例子如何使用substransformation – simar

回答

2

你可以用循环做到这一点。 但是,不要担心,用Pentaho做这件事并不难。

首先,你会用作业来创建你的循环:

START - >Transform_that_holds_parameters - >Transform_to_run_in_a_loop

正如您可以猜到,你的转换运行同样在每个DB上是这个流的最后一个。但我们需要在该作业输入上设置两个高级标志:

  • 对每个输入行执行?
  • 将以前的结果复制到参数中?

这时我们就需要用下面的结构来构建我们Transform_that_holds_parameters

Some_sort_of_input - > copy_rows_to_result

在这里,你将不得不抓住从某处所有连接参数,无论是Excel文件或另一个数据库中的表格。但是,一旦您对这些数据进行了修改,请确保每个要运行转换的数据库都有一行。好吗?

将它连接到'Copy rows to result'步骤,这一步将数据发送回我们的JOB,如果您记得,我们的下一个转换设置为'对每个输入行执行'和'将以前的结果复制到参数”。

现在,请记住什么是列转换的最后一步的列名,您将需要他们在下一步。

你回我们的工作,并转到Transform_to_run_in_a_loop,开放参数的特性,并在列“参数”和'流的列名称与我们刚才复制到结果列填写。

在您的转换中,您将需要使用完全相同的名称设置相同的参数。在连接设置中使用这些参数。

完成后,现在您将拥有第一个转换设置所有参数的设置,第二个转换将为您拥有的每个数据库配置运行。

相关问题