Write to DB におけるエラー処理の設定

Write to DB ステージにはエラー ポートがあります。エラー ポートを使用すると、データベースにレコードを書き込む際にプライマリ キー制約違反や一意性制約違反などのデータベース エラーとなるレコードをフィルタして除外できます。このようなレコードはデータフローの別のパスにルーティングされ、それ以外のレコードは正常に確定されます。例えば、100 件のレコードを処理する際に、レコード 4、23、および 56 がデータベース エラーとなる場合、これら 3 件のレコードはエラー ポートを介してルーティングされ、その他 97 件のレコードはデータベースにコミットされます。

注: エラー ポートを使うかどうかは任意です。エラー ポートを使わない場合は、レコードが 1 つでもエラーになるとジョブは失敗に終わります。
  1. パレットから、エラー レコードを処理するタイプ ステージ (Write to File など) を選択してキャンバスにドラッグします。ステージを選択するオプションがいくつかあります。
    • 失敗したレコードをファイルに書き込むには、Write to File、Write to XML、または Write to Variable Format File のいずれかをキャンバスにドラッグします。
    • 失敗したレコードを単に破棄するには、Write to Null をキャンバスにドラッグします。
  2. Write to DB のエラー ポートを、失敗したレコードを処理するステージに接続します。

    次の例では、Write to DB のエラー ポートが Write to File ステージに接続されています。この例では、データベースに書き込む際にエラーとなるレコードは、データベースではなく、Write to File ステージで指定されたファイルに書き込まれます。

データフローを実行すると、エラーとなるレコードは、エラー ポートを介してルーティングされます。エラー ポートからのレコードには、Write to DB で指定されたフィールドと、次のフィールドが含まれます。

Error.code
このフィールドには、データベースから返される数値エラー コードが含まれます。例えば、 ORA-00001: unique constraint ANKUSH.SYS_C0010018) violated というエラーがある場合、Error.code フィールドの値は 1 になります。エラー コードの一覧については、データベース ソフトウェアのマニュアルを参照してください。
Error.Message
このフィールドには、データベースから返されるエラー メッセージが含まれます。例: ORA-01034 ORACLE not available。この場合、ORACLE not available は、Error.Message フィールドの値です。エラー メッセージの一覧については、データベース ソフトウェアのマニュアルを参照してください。
Error.SQLState
このフィールドには、エラーの原因に関する詳細情報を示す SQLSTATE コードが含まれます。SQLSTATE コードの一覧については、データベース ソフトウェアのマニュアルを参照してください。
Timestamp
Spectrum™ Technology Platform サーバーでエラーが発生したときの日時。
Username
データフローを実行した Spectrum™ Technology Platform ユーザの名前。