如何组合多个Talend上下文? (例如不同的数据库连接)

时间:2014-08-28 13:11:08

标签: etl talend

产品: Talend Open Studio for Big Data(5.6.0M3_20140806_1834)

可以使用context和/或context group(您可以将其视为环境参数集,例如 development 的源和目标数据库设置,< em> test 和 production )。

请点击此处查看示例:http://www.talendforge.org/tutorials/tutorial.php?idTuto=14#step183 5mn Demo

因此,可以使用作业中的一些db connection对象执行此操作,并根据上下文(例如,使用context.srcDbHostName的服务器名称)对其进行配置。

如果你创建了这样一个上下文组,你可以很好地使用它,例如创建作业以将数据从某个源复制到某个目标数据库(例如,在数据仓库环境中)。然后在所有这些环境中对其进行测试,只需单击一下即可选择上下文组的特定上下文。

现在,如果您还希望通过自定义SQL查询和与它们相关的向导来调试数据库等,则可以基于Metadata->DB connections区域进行良好集成。

现在,如果我们可以将这些连接重用我们的上下文组(而不是为我们所有不同的源和目标数据库手动创建数据库连接),那就太好了,这意味着让它们基于我们的单个上下文组。因此,在我们的示例中,我们只需要两个连接,一个用于源数据库连接,另一个用于目标数据库连接,在访问时将出现一个对话框,让我们选择适当的环境。

但这些连接首先由离散值配置。有一个选项可以将此类连接导出为新上下文组中的上下文但是如果你有两个这样的连接,就像上面的例子一样,你最终会得到两个不同的上下文组,尽管你只需要一个包含两个上下文的组。 : - (

我发现无法完成此类 上下文组合并 导出合并功能。

但是我找到了另一种相当简单但不支持向导的方法来做到这一点。 (见下面的答案)

1 个答案:

答案 0 :(得分:1)

只有一个直接的解决方案可行,但是当你得到图片时,你可以调整步骤到最适合你的问题的场景......

  1. 元数据 - &gt;数据库连接 下创建数据库连接(例如 test env src db)
  2. 将此导出为所需的上下文小组作为起点
  3. 将所有其他环境上下文添加到此论坛(例如 prod demo src dbs的所有值)
  4. 创建其他数据库连接(例如 test env dst db)
  5. 现在在磁盘上的项目中找到以下文件及其内容:
    • context/<myCtxGroup>.properties
      • xmi:XMI/TalendProperties:Property/@id = "myCtxGrpId"
    • metadata/connections/<srcdb>.item
      • xmi:XMI/TalendMetadata:DatabaseConnection ContextId="myCtxGrpId" contextName="test" ... ServerName="context.srcDbHost" ...
    • metadata/connections/<dstdb>.item
      • xmi:XMI/TalendMetadata:DatabaseConnection ...
  6. 将正常运行的 srcdb 连接中找到的所有ContextIdcontextName,...属性添加到 dstdb 连接有
    • 当然有些东西应该看起来有点不同,例如 ServerName="context.dstDbHost" (不是srcDbHost
  7. 测试它,它应该像所有环境的魅力一样: - )