はじめに

COPYコマンドのエラー内容とエラーデータは、ファイルに出力する方法とテーブルに出力する方法があります。

本記事では、COPYコマンドのエラー内容とエラーデータをテーブルに出力する方法をご紹介します。

エラー内容とエラーデータをテーブルに出力する方法

構文


※出力先のテーブルは、COPYコマンドでエラー発生した時に自動で作成されます。
 既に自動で作成されたテーブルが存在する場合は、エラー内容/データが追加されます。

出力されるテーブルの情報

エラー内容とエラーデータが出力されるテーブルの情報は以下になります。

カラム名データ・タイプ概要
node_nameVARCHAR入力ロードファイルが配置されたVerticaノードの名前。
file_nameVARCHARロードされているファイルの名前。これは、(STDINを使用するのではなく)ファイルをロードした場合に適用されます。
session_idVARCHARCOPYステートメントが発生したセッションID番号。
transaction_idINTEGERセッション内のトランザクションの識別子(存在する場合)。それ以外の場合はNULL。
statement_id INTEGER拒否されたデータを含むトランザクション内のステートメントの一意の識別番号。
batch_numberINTEGER内部使用。データがどのバッチ(チャンク)からのものかを表します。
row_numberINTEGER入力ファイルから拒否された行番号。
rejected_dataLONG VARCHARロードされなかったデータ。
rejected_data_orig_lengthINTEGER拒否されたデータの長さ。
rejected_reasonVARCHAR拒否された行の原因となったエラー。この列は、テーブルに保存しない場合に、ロード例外ファイルに存在するのと同じメッセージを返します。

使用例


制限事項

エラー内容とエラーデータが出力されるテーブルに対しては、以下の制限があります。

・SELECTとDROP TABLEは実行できますが、それ以外のDMLやDDLは実行できません。


・手動で作成したテーブルは、出力先のテーブルとして指定できません。
 指定した場合は、COPYコマンドの実行時に「ERROR 6044」が出力されます。


参考

Saving Rejected Data To a Table

https://www.vertica.com/docs/10.0.x/HTML/Content/Authoring/AdministratorsGuide/BulkLoadCOPY/SavingRejectionsTable.htm

検証バージョンについて

この記事の内容はVertica 10.0で確認しています。

更新履歴

2020/12/18 本記事を公開