Talend 正确的方式来处理事务
Talend right way to handle transaction
我需要在我的 ETL 过程中处理事务。我正在将一些数据从文件加载到我的数据库,我需要管理提交和回滚。如果我的文件中包含数据的任何行有错误或模式错误,我需要进行回滚,否则我需要将数据放入我的数据库 table 并提交更改。所以我准备了工作,一切似乎都有效。但是我是ETL流程的初学者,我想问一下,有没有更有效的方法来处理这个问题?
这是作业架构:
到目前为止,工作看起来不错。我只有一个建议,如果此组件有一些错误,您也可以将 tPostgressqlRollback(onComponentError) 放在 tPostgresqlOuput 上。
这似乎是个好方法。
虽然我会进入一个更一般的方向。这意味着我将在尝试写入数据库的组件中激活 "Stop when error" 选项。
然后,我会添加一个通用的 tLogCatcher 组件,它会做两件事:
- 首先,使用 tPostgresRollback 组件回滚更改
- 然后将数据输出到数据库table、日志文件或控制台(任何你可以使用它来采取行动的地方)
- 然后停止作业
优点:您可以将这个东西复制到每个新作业中,并自动记录错误,而不会太麻烦。只有组件错误将停止作业的选项必须启用。
我需要在我的 ETL 过程中处理事务。我正在将一些数据从文件加载到我的数据库,我需要管理提交和回滚。如果我的文件中包含数据的任何行有错误或模式错误,我需要进行回滚,否则我需要将数据放入我的数据库 table 并提交更改。所以我准备了工作,一切似乎都有效。但是我是ETL流程的初学者,我想问一下,有没有更有效的方法来处理这个问题?
这是作业架构:
到目前为止,工作看起来不错。我只有一个建议,如果此组件有一些错误,您也可以将 tPostgressqlRollback(onComponentError) 放在 tPostgresqlOuput 上。
这似乎是个好方法。
虽然我会进入一个更一般的方向。这意味着我将在尝试写入数据库的组件中激活 "Stop when error" 选项。
然后,我会添加一个通用的 tLogCatcher 组件,它会做两件事:
- 首先,使用 tPostgresRollback 组件回滚更改
- 然后将数据输出到数据库table、日志文件或控制台(任何你可以使用它来采取行动的地方)
- 然后停止作业
优点:您可以将这个东西复制到每个新作业中,并自动记录错误,而不会太麻烦。只有组件错误将停止作业的选项必须启用。