【问题标题】:Issue with updating selected records in Postgres target - Talend 7X Open studio更新 Postgres 目标中选定记录的问题 - Talend 7X Open studio
【发布时间】:2021-06-16 14:30:45
【问题描述】:

我是 talend 新手,在尝试实现以下逻辑时遇到问题。我需要将遗留数据从 oracle 转换为 postgres,下面是 postgres 目标表的示例结构。

tableseq(db sequence) casenumber legacynumber statusofcase
1 123 789 A
2 123 678 B
3 123 456 C

我在 tmap 组件中创建了各种过滤器来插入上述格式的数据。

但是对于更新场景,我将密钥作为 casenumber,但我想更新 legacynumber 为 456 的记录的状态。

我不能将 legacynumber 作为键,因为此更新的一部分我还需要将 legacynumber 列更新为某个新数字,例如 100。

基本上我正在尝试在 talend 中实现以下 SQL 功能。

update tableA set legacynumber=100 where legacynumber=456 and casenumber=123;

【问题讨论】:

    标签: postgresql talend


    【解决方案1】:

    您可以在目标表上进行连接,在 DBOutput 之前的 tMap 上。 在 tMap 中:将您的 to-Update-Flow 与您的目标表连接:检索与您的旧编号相对应的序列(对于 456=> 3)。将序列作为更新键添加到您的输出流中。

    【讨论】:

    • 当我加入表时,它作为查找出现,并且在进程开始之前,查找表正在加载,在这种情况下,表中的 MAX(seq) 为空。
    • 让我知道是否有另一种方法可以加入表格,我可以在插入后从表格中获取最大序列。
    • 不确定我是否完全理解这项工作的设计。也许您可以尝试让第一个子作业插入数据,第二个子作业更新?
    猜你喜欢
    • 2022-07-02
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 2021-11-01
    相关资源
    最近更新 更多