如何存储数字.序列例程返回值在上下文变量中



我正在开发如下的talend etl工作。

我有源数据库每天从哪里提取数据。我的目标表包含两个列ID,名称。对于ID列,我正在从数字序列(" S1",1,1)例程中生成值。但是我的问题是,当我执行作业时,它是从启动值(即数字序列中提供的)生成值。但是我想将最后一个生成的值作为起始值。

解决方案:我可以通过从表中提取最大ID来实现它,但我不想使用表。我想存储用数字生成的最大ID值。序列例程在上下文变量中,并在执行工作时将其用作启动值。我尝试过,但它仅以新鲜的价值生成。

请让我知道Talend中的所有可用选项。

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

一种解决方案是使用数据库序列(带有PostgreSQL的示例):

  • 在Yout Target表的ID列上添加序列
  • 在您的输出组件中使用" NextVal('':: RegClass)"(请参见下图)

NextVal_example

最新更新