2017-09-01 51 views
0

私のETL処理でトランザクションを処理する必要があります。私はいくつかのデータをファイルから自分のデータベースにロードしています。コミットとロールバックを管理する必要があります。私のファイル内のデータに行が間違っていたり、スキーマが間違っていたりする場合は、ロールバックを行う必要があります。そうでなければ、私のdatabaeテーブルにデータを入れて変更をコミットする必要があります。だから私は仕事を準備し、すべてがうまくいくように思える。しかし、私はETLプロセスを開始しています。この問題を処理する効率的な方法はありますか?ここでトランザクションを処理するTalendの正しい方法

は、ジョブのスキーマです: enter image description here

答えて

0

これは良いアプローチのようです。

私はもっと一般的な方向に行くでしょう。これは、dbに書き込もうとするコンポーネントで「エラー時に停止する」オプションを有効にすることを意味します。

  • そして、出力データのデータベーステーブルにtPostgresRollbackコンポーネントと

    • まず、ロールバックの変更:

      その後、私は2つのことをするだろう一般的なtLogCatcherコンポーネントを追加します、ログファイルまたはコンソール(これを使用してアクションを起こすことができるところ)

    • そして、ジョブを停止します。

    利点:このことをすべての新しいジョブにコピーし、あまりにも面倒なく自動エラーログを記録することができます。コンポーネントエラーがジョブを停止するオプションのみを有効にする必要があります。

  • +0

    ご理解いただきありがとうございます。 – LucasPG

    +1

    また、接続を閉じる必要があります。これは、それを解放せずにループ上で新しい接続を要求する(なぜそうではないのか)ために問題になる可能性があります。 (プレジョブでやって、ポストジョブは簡単です)。 – AxelH

    0

    仕事を抜いてよさそうです。このコンポーネントに何らかのエラーがある場合でも、tPostgresqlOuputにtPostgressqlRollback(onComponentError)を配置できるという提案があります。

    関連する問題