データロードをトラブルシューティングするためのシステムテーブル - Amazon Redshift

データロードをトラブルシューティングするためのシステムテーブル

以下の Amazon Redshift システムテーブルは、データのロードに関する問題のトラブルシューティングに役立ちます。

  • 特定のロード中に発生したエラーを見つけるには、STL_LOAD_ERRORS にクエリします。

  • 特定のファイルのロード時間を参照したり、特定のファイルが読み取られたかどうかを確認するには、STL_FILE_SCAN にクエリします。

  • STL_S3CLIENT_ERROR にクエリを実行し、Amazon S3 からのデータ転送時に発生したエラーの詳細を調べます。

ロードエラーを検出し、診断するには、次の操作を実行します。
  1. ロードエラーに関する詳細を返すビューを作成するか、クエリを定義します。次の例では、STL_LOAD_ERRORS テーブルが STV_TBL_PERM テーブルと結合し、テーブル ID と実際のテーブル名が照合されます。

    create view loadview as (select distinct tbl, trim(name) as table_name, query, starttime, trim(filename) as input, line_number, colname, err_code, trim(err_reason) as reason from stl_load_errors sl, stv_tbl_perm sp where sl.tbl = sp.id);
  2. COPY コマンドの MAXERRORS オプションを十分な大きさの値に設定し、データに関する役に立つ情報を COPY で返せるようにします。COPY でエラーが発生した場合、エラーメッセージにより STL_LOAD_ERRORS テーブルで詳細を確認するように指示されます。

  3. LOADVIEW ビューにクエリし、エラー詳細を確認します。次に例を示します。

    select * from loadview where table_name='venue';
    tbl | table_name | query | starttime --------+------------+-------+---------------------------- 100551 | venue | 20974 | 2013-01-29 19:05:58.365391 | input | line_number | colname | err_code | reason +----------------+-------------+-------+----------+--------------------- | venue_pipe.txt | 1 | 0 | 1214 | Delimiter not found
  4. ビューが返す情報に基づいて、入力ファイルまたはロードスクリプトの問題を修正します。注意するべき一般的なロードエラーには次のものがあります。

    • テーブルのデータ型と入力データフィールドの値の不一致。

    • テーブルの列数と入力データのフィールド数の不一致。

    • 引用符が一致しません。Amazon Redshift は、一重引用符と二重引用符の両方をサポートしています。ただし、これらの引用符は適切にバランスを取る必要があります。

    • 正しくない入力ファイルの日付/時刻形式。

    • 入力ファイルの値が範囲外 (数値列に関して)。

    • 列の値の数がその圧縮エンコーディングの制限を超えている。