- copy.sql
copy customer from 's3://awssampledbuswest2/ssbgz/customer' credentials 'aws_iam_role=arn:aws:iam::123456789012:role/RedshiftRole' gzip compupdate off region 'us-west-2';
- エラー参照用のビューを作成する。
# create schema admin; # create or replace view admin.v_my_last_copy_errors as select query, starttime, filename, line_number, err_reason, colname, type column_type, col_length, raw_field_value from stl_load_errors le where le.query = pg_last_copy_id();
- STL_LOAD_ERRORS - Amazon Redshift、STL_LOADERROR_DETAIL - Amazon Redshift で実行時間帯のエラーを確認する。
- 実行する
- パスワードの指定は環境変数と .pgpass に記述する方法があり、.pgpass 推奨だがとりあえず。
$ export PGPASSWORD=<パスワード> $ psql --set ON_ERROR_STOP=on "host=redshift-cluster-1.******.us-west-2.redshift.amazonaws.com user=awsuser dbname=dev port=5439" -f copy.sql psql:copy.sql:3: ERROR: Cannot COPY into nonexistent table customer ★エラーメッセージ $ echo $? 3 ★戻り値(正常終了は0)
- エラーメッセージを参照する。
$ psql "host=redshift-cluster-1.******.us-west-2.redshift.amazonaws.com user=awsuser dbname=dev port=5439" # select * from admin.v_my_last_copy_errors;
参考
終了状態
https://www.postgresql.jp/document/8.1/html/app-psql.html
psqlは、正常に終了した時には0を、psqlにとって致命的なエラー(メモリ不足やファイルが見つからないなど)が発生した時には1を、セッションが対話式でない状態でサーバとの接続が不完全になった時には2を、ON_ERROR_STOP変数が設定されている状態でスクリプトでエラーが発生した時には3をシェルに返します。