メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012年12月1日)

STL_LOADERROR_DETAIL

COPY コマンドを使用したテーブルのロード中に発生したデータ解析エラーのログを表示します。ディスク領域を節約するために、各ロード操作に関してノードスライスあたり最大 20 件のエラーがログに記録されます。

解析エラーは、Amazon Redshift がデータ行をテーブルにロードするときに、データ行内のフィールドを解析できない場合に発生します。例えば、テーブルの中のある列が整数データ型を前提としており、データファイルではそのフィールドに文字列が含まれている場合、解析エラーが発生します。

STL_LOADERROR_DETAIL は、STL_LOAD_ERRORS をクエリしてエラーに関する一般的な情報を得た後で、解析エラーが発生したデータの正確な行と列などの追加的な詳細を得るためにクエリします。

STL_LOADERROR_DETAIL テーブルには、解析エラーが発生した列を含む、そこまでのすべてのデータ列が含まれています。VALUE フィールドを使用すると、エラーまでに正しく解析された列と、エラーの列で実際に解析されたデータ値を確認することができます。

このテーブル はすべてのユーザーに表示されます。スーパーユーザーはすべての行を表示できます。通常のユーザーは自分のデータのみを表示できます。詳細については、「システムテーブルとビューのデータの可視性」を参照してください。

テーブルの列

列名 データ型 説明
userid integer エントリを生成したユーザーの ID。
slice integer エラーが発生したスライス。
session integer ロードを実行するセッションのセッション ID。
query integer クエリ ID。クエリ列は、他の各種システムテーブルおよびビューを結合するために使用できます。
filename character(256) ロードの入力ファイルへの完全なパス。
line_number bigint ロードファイル内の、エラーが発生した行の番号。
field integer エラーが発生したフィールド。
colname character(1024) 列名。
value character(1024) フィールドの解析済みデータ値 (切り詰められることがあります)。ロードデータ内のマルチバイト文字は、ピリオドで置換されます。
is_null integer 解析された値が null であるかどうか。
type character(10) フィールドのデータ型。
col_length character(10) 定義されている場合、列の長さ。このフィールドは、データ型に長さの制限がある場合、値を持ちます。例えば、データ型が「character(3)」の場合、この列の値は「3」になります。

サンプルクエリ

次のクエリは、STL_LOAD_ERRORS を STL_LOADERROR_DETAIL に結合して、テーブル ID が 100133 である EVENT テーブルのロード時に発生した解析エラーの詳細を表示します。

Copy
select d.query, d.line_number, d.value, le.raw_line, le.err_reason from stl_loaderror_detail d, stl_load_errors le where d.query = le.query and tbl = 100133;

次のサンプル出力は、正常にロードされた列と、エラーのある列を示しています。この例では、3 番目の列で解析エラーが発生するまでに 2 つの列が正しくロードされ、3 番目の列では整数が前提となっているにもかかわらず文字列が解析されています。フィールドは整数であることが前提なので、初期化されていないデータである文字列「aaa」は null と解析されて、解析エラーが発生します。出力は、生の値、解析された値、およびエラー理由を示しています。

Copy
query | line_number | value | raw_line | err_reason -------+-------------+-------+----------+---------------- 4 | 3 | 1201 | 1201 | Invalid digit 4 | 3 | 126 | 126 | Invalid digit 4 | 3 | | aaa | Invalid digit (3 rows)

クエリによって STL_LOAD_ERRORS と STL_LOADERROR_DETAIL が結合されると、データ行の各列にエラー理由が示されます。これは、その行でエラーが発生したことを示しているだけです。実際に解析エラーが発生しているのは、結果の最後の行です。

このページの内容: