失敗した Amazon Redshift データロードのトラブルシューティングを行うにはどうすればよいですか?

最終更新日: 2020 年 8 月 27 日

失敗した Amazon Redshift データロードのトラブルシューティングを行うにはどうすればよいですか?

簡単な説明

STL_LOAD_ERRORS テーブルを使用して、特定のロード中に発生したエラーを特定します。

解決方法

注意: 次の手順では、都市と会場のサンプルデータセットを使用します。

1.    以下の内容を使用して、Amazon Simple Storage Service (Amazon S3) バケットに venue_pipe0000_part_00 という名前の未加工ファイルを作成します。

7|BMO Field|Toronto|ON|0
16|TD Garden|Boston|MA|0
23|The Palace of Auburn Hills|Auburn Hills|MI|0
28|American Airlines Arena|Miami|FL|0
37|Staples Center|Los Angeles|CA|0
42|FedExForum|Memphis|TN|0
52|PNC Arena|Raleigh|NC  ,25   |0
59|Scotiabank Saddledome|Calgary|AB|0
66|SAP Center|San Jose|CA|0
73|Heinz Field|Pittsburgh|PA|65050

詳細については、「パイプ区切りファイル (デフォルトの区切り文字) からのリストをロード」を参照してください。

2.    main_schema.venue1 テーブルを作成します。

CREATE TABLE VENUE1(
VENUEID SMALLINT,
VENUENAME VARCHAR(100),
VENUECITY VARCHAR(30),
VENUESTATE CHAR(2),
VENUESEATS INTEGER
) DISTSTYLE EVEN;

3.    ロードの失敗を診断するためにロードビューを作成します。

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);

4.    Copy コマンドを使用してデータをロードします。

testdb=# copy venue1
testdb-# from 's3://your_S3_bucket/venue/'
testdb-# iam_role 'arn:aws:iam::123456789012:role/redshiftcopyfroms3' delimiter '|' ;

注意: your_S3_bucket を S3 バケットの名前に置き換えます。次に、arn:aws:iam::123456789012:role/redshiftcopyfroms3 を AWS Identity and Access Management (IAM) ロールの Amazon リソースネーム (ARN) に置き換えます。詳細は、パラメータを参照してください。

5.    ロードビューをクエリして、テーブルの詳細ロードを表示します。

testdb=# select * from loadview where table_name='venue1';
tbl | 265190
table_name | venue1
query | 5790
starttime | 2017-07-03 11:54:22.864584
input | s3://
your_S3_bucket/venue/venue_pipe0000_part_00
line_number | 7
colname | venuestate
err_code | 1204
reason | Char length exceeds DDL length

注意: 標準ユーザーは、STL_LOAD_ERRORS テーブルのクエリ時にのみ、ご自分のデータを表示できます。すべてのテーブルデータを表示するには、スーパーユーザーである必要があります。

このクエリからの出力には、以下の重要な情報が含まれています。

  • エラーの原因となっているファイル。
  • エラーの原因となっている列。
  • 入力ファイルの行番号。
  • 例外の理由。

上記の例では、例外は長さの値によって発生します。これは、venuestate 列に追加する必要があります。値 (NC ,25 |) が VENUESTATE CHAR(2) DDL で定義されている長さよりも長いです。この例外を解決するには、正しい値を使用するようにファイルを修正します。

7|BMO Field|Toronto|ON|0
16|TD Garden|Boston|MA|0
23|The Palace of Auburn Hills|Auburn Hills|MI|0
28|American Airlines Arena|Miami|FL|0
37|Staples Center|Los Angeles|CA|0
42|FedExForum|Memphis|TN|0
52|PNC Arena|Raleigh|NC|0
59|Scotiabank Saddledome|Calgary|AB|0
66|SAP Center|San Jose|CA|0
73|Heinz Field|Pittsburgh|PA|65050

6.    データロードを再ロードします。

testdb=# copy venue1
from 's3://your_S3_bucket/sales/'
iam_role 'arn:aws:iam::123456789012:role/redshiftcopyfroms3' delimiter '|' ;
INFO:  Load into table 'venue1' completed, 808 record(s) loaded successfully.

この記事はお役に立ちましたか?


請求に関するサポートまたは技術的なサポートが必要ですか?