从MS SQL过渡到Pentaho Kettle

时间:2017-08-09 04:17:10

标签: pentaho pentaho-data-integration

我有几个ms SQL脚本,我想迁移到水壶。理想情况下,我想要做的是脚本的每一步都是水壶中的一个步骤。但我发现很难围绕ms SQL语句和相关的水壶步骤。有人可以详细说明可用于执行以下操作的水壶步骤:

  1. 从[table]中选择* - 这个显然是[输入 - >表格输入]
  2. ALTER TABLE [table] ADD [fieldname] [nvarchar](255)
  3. 更新b SET b.b_field = a.a_field     FROM [table_a] a     INNER JOIN [table_b] b     右边(b.b_identity,19)= a.a_identity     其中b.b_field为空

  4. 在许多其他不同的表格中重复步骤3,并对不同的字段进行比较。

    谢谢。

2 个答案:

答案 0 :(得分:1)

您无法一步一步地翻译它。替换功能,但您不能简单地将SQL步骤映射到PDI步骤。这是一个完全不同的范例。

答案 1 :(得分:0)

将SQL脚本迁移到Kettle的快速而又脏的方法是SQL Execute script步骤,您可以按原样复制/粘贴脚本。

仍然快速而肮脏的方式,请注意您可以在Table Input中放置多个语句,前提是它们被昏迷分开。您甚至可以使用SELECT INTO创建临时表,索引它们并从中读取它们。

但显然这不是很干净。对于(2),您可以生成包含表名和字段名的流,然后使用Javascript步骤写下包含文本的列" ALTER TABLE [table-name] ADD [ field-name] NVARCHAR(255)",然后Dynamic SQL row为每个输入行执行该语句。

对于(3),原则是创建输入流,其中Table Input带有" SELECT a.a_field FROM [table_a] a INNER JOIN [table_b] b ON RIGHT(b.b_identity, 19)= a.a_identity&#34 ;.然后使用Update步骤更新table_b。我无法真正帮助那里,因为我没有看到更新的b键。

当完成并测试一个表和一个字段时,您可以将这些值放在参数中,并使用Job循环参数。

您的发行版随附的sample directory中有一个此用例示例。它与spoon.bat位于同一个文件夹中,您感兴趣的工作是samples/transformations/dynamic-table/Dynamic table creation and population.kjb