我有很多数据库(+100),每个数据库都有相同的结构和不同的连接。 我使用Kettle在不同的数据库中运行转换以创建数据仓库。
如何使用不同的连接自动运行相同的转换?
我已经证明了这个Pass DB Connection parameters to a Kettle a.k.a PDI table Input step dynamically from Excel,但它只接受csv中的一行。
我应该创建一个循环,还是我需要创建一个脚本?
任何帮助将不胜感激。 (对不起我的英文)
答案 0 :(得分:2)
你可以用循环来做。 但是,不要担心,用Pentaho做到这一点并不难。
首先,您将使用JOB创建循环:
START - > Transform_that_holds_parameters - >的 Transform_to_run_in_a_loop 强>
正如您所猜测的那样,您在每个数据库上运行的转换是此流程中的最后一个转换。但我们需要在该作业条目上设置两个高级标志:
然后我们需要使用以下结构构建 Transform_that_holds_parameters :
Some_sort_of_input - > copy_rows_to_result
在这里,你必须从某个地方获取所有连接参数,无论是Excel文件还是其他数据库中的表。但是,一旦你对这些数据进行评分,确保每个要运行转换的数据库都有1行。好吗?
将其连接到'将行复制到结果'步骤,此步骤将数据发送回我们的JOB,如果您还记得,我们的下一个转换设置为对每个输入行执行'执行。和'将以前的结果复制到参数'。
现在,请记住转换到最后一步的列名是什么,下一步将需要它们。
返回我们的工作室并转到 Transform_to_run_in_a_loop 的属性,打开参数并填写“"参数'和'流列名称'使用我们刚刚复制到Result的列。
在转换过程中,您需要使用完全相同的名称设置相同的参数。并在连接设置中使用这些参数。
完成后,现在您将拥有第一个转换设置所有参数,第二个转换为您拥有的每个数据库配置运行。