2017-09-01 145 views
0

我需要在我的ETL过程中处理交易。我正在从文件加载一些数据到我的数据库,并且我需要管理提交和回滚。如果我的数据文件中的任何行有错误或模式错误,我需要执行回滚,否则我需要将数据放入数据库表并提交更改。所以我准备好了工作,一切似乎都奏效了。但是我在ETL过程中起了作用,我想问一下,有没有更有效的方法来解决这个问题?Talend处理交易的正确方式

这里的工作模式: enter image description here

回答

0

这似乎是一个很好的方法。

虽然我会进入一个更普遍的方向。这意味着我会激活试图写入数据库的组件中的“Stop when error”选项。

然后,我想补充一个普通tLogCatcher组件,它会做两件事情:

  • 首先,回滚与tPostgresRollback成分变化
  • 然后输出数据到数据库表,日志文件或控制台上(无论何处,您可以使用它进行操作)
  • 然后停止作业

优点:你可以将这个东西复制到每一个新的工作中,并且没有太多麻烦就自动记录错误。必须启用组件错误才能停止作业的选项。

+0

了解,谢谢您的建议。 – LucasPG

+1

你也应该关闭连接。这可能会成为一个问题,请求一个循环上的新连接(因为为什么不),而不会释放它。 (在prejob完成,postjob很简单)。 – AxelH

0

工作看起来不错迄今。我只是有一个建议,如果这个组件有一些错误,你可以把tPostgressqlRollback(onComponentError)放在tPostgresqlOutput上。