如何在上下文变量中存储Numeric.Sequence例程返回值

时间:2017-02-27 12:12:04

标签: talend

我正在开发Talend ETL工作如下。

我有源数据库,我每天从中提取数据。我的目标表包含两列id,name。对于id列,我从Numeric.Sequence(" s1" 1,1)例程生成值。但我的问题是,当我执行工作时,它从起始值生成值,即在Numeric.Sequence例程中提供。但我希望将最后生成的值作为起始值。

解决方案:我可以通过从表中提取max id来实现它但是我不想使用表格。 我想在上下文变量中存储使用Numeric.Sequence例程生成的最大id值,并在执行我的作业时将其用作起始值。我试过了,但它只是产生了新的价值。

请告诉我Talend中的所有可用选项。

1 个答案:

答案 0 :(得分:0)

每次执行作业时都会重置作业上下文。 请记住,您正在运行Java程序,只有当程序处于活动状态而不是之后才会保留变量。

解决方案是使用数据库序列(使用postgreSQL的示例):

  • 在yout目标表的id列上添加序列
  • 在输出组件中使用“nextval('':: regclass)”(见下图)

nextval_example