如何在TALEND中的不同行中拆分一行

时间:2015-01-05 05:55:35

标签: data-migration talend

我需要帮助将旧数据库中的一行迁移到新数据库中的多行。

我有一个数据:

OID       CUSTOMER_NAME     DOB            ADDRESS
1          XYZ              03/04/1987    ABC

在我的新数据库中,我将数据存储在KEY VALUE对中,如:

OID      KEY            VALUE
1      CUSTOMER_NAME    XYZ
1      DOB             03/04/1987
1      ADDRESS        ABC

有人请用TALEND工具帮我解决这个问题。

5 个答案:

答案 0 :(得分:2)

您可以在此处使用链接到同一输出的tMap多输出作为一种可能的解决方案。但它不是动态的。为什么你可以在源选择查询本身中将单行拆分成多行?

如果您想使用此tmap选项,请参阅下面的

tOracleInput(anyotherinput) - > TMAP - > toutput / tlogrow

将此行作为tmap组件的输入,并在tmap中创建一个输出组,如out_1。 现在,在此out_1中,从输入中拖动并链接OID和CUSTOMER_NAME列。 现在在此tmap中创建另一个输出组out_02,并在“添加输出”对话框出现时 选择“从中创建连接表”,然后在下拉列表中选择out_1组,以便来自此out_02组的输出行也将转到out_01组。 因此,我们的tmap只有一个输出组out_01,其中包含out_01和out_02的行。现在在out_02中拖动并链接OID和DBO列。 同样为out_03重复它并链接OID和ADDRESS列..

答案 1 :(得分:0)

花了一两个小时后,我找到了一个使用Talend的解决方案而没有编写单行Java代码。 如果你按照我的所有步骤,那么你将获得欲望的结果。

注意:我将您的输入作为此开发的来源,因此实际情况可能有所不同。

  1. 在输入源后添加tMap。
  2. 在单列中将源列与coma连接起来。
  3. 在连接列末尾的
  4. 添加分号。有关详细信息,请参阅图像。 enter image description here

    • 在tMap之后添加tNormalize组件并在图像中进行设置。 enter image description here
    • 添加tDenormalize组件,并按照图像进行设置。 enter image description here
  5. 添加tExtractDelimitedFields组件并配置如图所示。 enter image description here

  6. 添加另一个tMap并执行如图所示的设置。 enter image description here
  7. 现在您有两个输出流,因此为每个输出添加另一个tNormalize组件。 enter image description here
  8. 将第一个tNormalize组件配置为Image中的shon。 enter image description here
  9. 使用以下设置配置第二个tNormalize组件,如图所示。 enter image description here
  10. 我们的最终工作将如下图所示。 enter image description here
  11. 完成所有这些操作后,您将获得此输出 enter image description here
  12. 现在,您可以创建另一个子作业来处理这些输出,以根据您的要求加入并创建新的输出。

答案 2 :(得分:0)

<强> tOracleInput(anyotherinput) - &GT; tSplitRow - &GT; toutput / tlogrow

Snap1

Snap2

答案 3 :(得分:0)

你可以使用tPivotToColumnsDelimited。 在talend帮助中心了解更多相关信息。 此组件将根据指定的行旋转表。 谢谢。

答案 4 :(得分:0)

使用tSplitRow执行此操作。请参阅下文。

Talend工作:

enter image description here

<强>输出:

enter image description here