2016-07-25 29 views
1

Ich habe ein Talend-Projekt, das von zwei Tabellen synchronisieren:Wie setze ich Rollback im Falle eines Fehlers in Talend?

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

Blick auf Foto unten.

Stellen Sie sich vor, zwei erste Schritte gehen gut, aber im letzten Schritt (Einfügen) wird ein Fehler ausgegeben. Kann ich gelöschte Zeilen wiederherstellen, die im ersten Schritt ausgeführt wurden?

Und wie funktioniert tMSSqlRollback überhaupt? Ich habe vergeblich versucht, es einzurichten. (Es sind keine Komponenten in der „Liste der Komponenten“ Dropdown-Liste, in ‚Simple Parameter‘ Tab.

Talend project photo

+0

In tMysqlDB-Komponenten sollten Sie immer die gleiche Verbindung verwenden und diese Verbindung tmysqlconnection sollte nicht aktiviert sein (unter Voreinstellungen). Jede mysql-db-Komponente in Ihrem Job sollte keine neue integrierte Verbindung erstellen, sondern die vorhandene Verbindung verwenden. Auf diese Weise sollte es funktionieren, sonst in Ihrem Fall, da Sie tmysqlrow zum Löschen verwenden - Sie können eine temporäre Tabelle erstellen, um Ihre Tabellendaten vor dem Löschen zu speichern, und bei einem Fehler oder Fehler können Sie die Daten aus dieser Sicherung kopieren/temporäre Tabelle in Ihre Tabelle, aus der Sie diese Daten gelöscht haben. – garpitmzn

Antwort

2

Zu allererst als garpitmzn sagte, sollten Sie eine Verbindung mit dem entsprechenden Element öffnen für Ihr Datenbanktyp, sagt TMySQLConnection. Das mit einem tPreJob getan werden könnte. Nun auch fügen Sie ein tMySQLCommit in einem tPostJob.

Sie wollen einige Fehlerbehandlung hinzuzufügen. Es gibt zwei Möglichkeiten

  • Extended inserts für tMySQLOutput aktiviert: Sie würde eine tLogRowCatcher irgendwo außerhalb Ihrer Arbeit hinzuzufügen haben. Fügen Sie einen tRollback für Ihren Datenbanktyp direkt danach hinzu (wie mit dem tPre/tPostJob, verknüpfen Sie es mit OnComponentOk).

  • Extended inserts deaktiviert ist: Zusätzlich zu Haupt, können Sie auch per Rechtsklick Recjected verbinden. Diese Zeilen werden aus irgendeinem Grund abgelehnt. Sie können diese Datensätze sammeln und sie in einer Tabelle oder einer Art von Fehlerbericht speichern, wo Sie diese abgelehnten Zeilen behandeln. HINWEIS: Auf diese Weise, obwohl detaillierter, kann sehr sehr schlecht auf die Leistung sein. Auch wenn die Datenbankverbindung abstürzt oder etwas anderes falsch ist, würden Sie noch brauchen, ist ein tLogRowCatcher

Die Rollback-Komponente muss nicht Teil der Hauptaufgabe sein.