如何在 Talend 出错时设置回滚?

How to set Rollback in case of Error in Talend?

我有一个 Talend 项目,通过以下方式同步两个表:

  1. DELETE TABLE 1
  2. SELECT * TABLE 2
  3. INSERT TABLE 1

看下面的照片。

想象一下,前两个步骤没问题,但在最后一步(插入)会抛出错误。我可以恢复在第一步执行的已删除行吗?

tMSSqlRollback 是如何工作的?我试图设置它是徒劳的。 ("List of components" 下拉列表中没有组件,在 'Simple parameter' 选项卡中。

首先,正如 garpitmzn 所说,您应该为您的数据库类型打开一个与相应元素的连接,比如 tMySQLConnection。这可以通过 tPreJob 来完成。现在,还要在 tPostJob.

中添加一个 tMySQLCommit

您想添加一些错误处理。有两种方式

  • Extended inserts 已为 tMySQLOutput 激活:您必须在您的外部某处添加一个 tLogRowCatcher工作。直接在它后面为你的数据库类型添加一个 tRollback(就像 tPre/tPostJob,link 它与 OnComponentOk).

  • Extended inserts 已停用:除了 Main,您还可以通过右键单击连接 Recjected .这些行由于某种原因被拒绝。您可以收集这些记录并将它们存储在 table 或某种错误报告中,您可以在其中处理那些被拒绝的行。 注意: 这种方式虽然更详细,但对性能可能非常非常差。此外,如果数据库连接崩溃或其他错误,您仍然需要 tLogRowCatcher

回滚组件不需要成为主作业的一部分。