2016-07-25 26 views
1

我有一個項目了Talend,通過同步兩個表:如何在Talend中設置回滾?

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

看看下面照片了。想象一下,兩個第一步都很好,但是在最後一步(插入)它會拋出一個錯誤。我可以恢復在第一步執行的刪除行嗎?

而且tMSSqlRollback如何工作呢?我徒勞地試圖設置它。 (目前正處在「組件列表」沒有組件下拉列表,在「簡單的參數」選項卡。

Talend project photo

+0

在tMysqlDB組件中,應始終使用相同的連接,並且此連接tmysqlconnection不應啓用自動提交(在高級設置下)。作業中的每個mysql db組件都不應創建新的內置連接,而應使用現有連接。這種方式它應該工作,否則在你的情況下,因爲你正在使用tmysqlrow寫入刪除 - 你可以創建一個臨時表來存儲你的表數據在刪除之前,以及無論錯誤或失敗,你可以從這個備份中複製數據/臨時表格放入您的表格中,從中刪除此數據。 – garpitmzn

回答

2

首先,作爲garpitmzn說,你應該打開與相應元素的連接你的數據庫類型,說tMySQLConnection。這可能是一個tPreJob,現在也處於tPostJob添加tMySQLCommit

你想添加一些錯誤處理完成。有兩種方法

  • Extended inserts被激活tMySQLOutput:你將不得不增加一個tLogRowCatcher某處你的工作之外。添加一個tRollback您的數據庫類型後,它(如與tPre/tPostJob,鏈接它與OnComponentOk)。

  • Extended inserts停用:此外,以主要,你也可以按右鍵Recjected連接。由於某些原因,這些行被拒絕。您可以收集這些記錄並將它們存儲在表格中或某種錯誤報告中處理那些被拒絕的行。 注意:這樣,雖然更詳細,可能會非常糟糕的性能。此外,如果數據庫連接崩潰或別的東西是錯誤的,你仍然需要一個tLogRowCatcher

回滾組件不需要是主要工作的一部分。