我有一个Talend项目,通过以下方式同步两个表:
DELETE TABLE 1
SELECT * TABLE 2
INSERT TABLE 1
看下面的照片。
想象一下,前两个步骤没问题,但是在最后一步(插入)它会抛出一个错误。我可以恢复在第一步执行的已删除行吗?
tMSSqlRollback
如何运作?我试图设置它是徒劳的。 (“简单参数”选项卡中的“组件列表”下拉列表中没有组件。
答案 0 :(得分:3)
首先,正如garpitmzn所说,您应该打开与数据库类型的相应元素的连接,例如 tMySQLConnection 。这可以通过 tPreJob 来完成。现在,还要在 tPostJob 中添加 tMySQLCommit 。
您想要添加一些错误处理。
有两种方式 Extended inserts
:您必须在工作之外的某处添加 tLogRowCatcher 。在它之后直接为您的数据库类型添加 tRollback (例如 tPre / tPostJob ,将其链接到 OnComponentOk )。
Extended inserts
已停用:除 Main 外,您还可以通过右键单击已拒绝进行连接。这些行由于某种原因被拒绝。您可以收集这些记录并将它们存储在表或某种错误报告中,您可以在其中处理这些被拒绝的行。 注意:这种方式,虽然更详细,但性能可能非常差。此外,如果数据库连接崩溃或其他错误,您仍然需要 tLogRowCatcher
回滚组件不需要是主要作业的一部分。