【AWS】Amazon Redshift ~ COPY コマンド ~

■ はじめに

Redshift で、S3上のデータを COPYコマンドを使って
ロードしているコードがあったので、メモしておく。

なお、COPYコマンドの使用例は、以下の関連記事を参照のこと。

Hiveテーブルデータ を Redshift に移行するには
https://dk521123.hatenablog.com/entry/2021/09/01/200818

目次

【1】COPYコマンド
【2】構文
【3】データ形式
【4】その他の事項
 1)COMPUPDATE - 自動圧縮ON/OFF
 2)STATUPDATE - 統計情報自動更新ON/OFF
【5】サンプル
【6】トラブル

【1】COPYコマンド

* COPY コマンドを使用して、
 以下のデータをRedshiftのテーブルに並列でロードする

[1] Amazon S3
[2] Amazon EMR クラスタ
[3] Amazon DynamoDB
[4] リモートホストから SSH 接続

https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/t_Loading_tables_with_the_COPY_command.html

より抜粋

(i)注記
大量のデータをロードする場合、COPY コマンドを使うことをお勧めします。
個々に INSERT ステートメントを使ってテーブルにデータを入力すると
著しく時間がかかる場合があります。

公式サイト
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_COPY.html
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/t_loading-tables-from-s3.html

【2】構文

* 主に、以下の 3 つのパラメータで COPY コマンドを実行する。

[1] テーブル名 (<table_name>)
[2] データソース (<data_source>)
[3] データにアクセスするための許可 (<authorization>)

構文

COPY <table_name>
FROM <data_source>
<authorization>
;

【3】データ形式

* CSV、JSON、GZIPなどがある。
* 詳細は、以下の公式サイトを参照のこと。

https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/copy-parameters-data-format.html

【4】その他のロード操作

https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/copy-parameters-data-load.html

1)COMPUPDATE - 自動圧縮ON/OFF

* 自動圧縮(COMP; compression)して更新(UPDATE)するかどうか

2)STATUPDATE - 統計情報自動更新ON/OFF

* 統計情報(STAT; statistics)を自動的に更新(UPDATE)するかどうか

【5】サンプル

-- パイプ区切りの GZIP ファイルから sample_table テーブルをロードする
COPY sample_table
FROM 's3://your-s3-bucket/xxxx/sample_db/sample_table' 
iam_role 'arn:aws:iam::XXXXXXXXXXX:role/for-redshift-role'
GZIP
DELIMITER '|'
COMPUPDATE OFF
STATUPDATE OFF
;

【6】トラブル

* 以下の公式サイトを参照のこと。

https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/t_Troubleshooting_load_errors.html

S3ServiceException エラー
https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/s3serviceexception-error.html

参考文献

https://www.task-notes.com/entry/20150907/1441594800

関連記事

Amazon Redshift ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/04/07/124519
Amazon Redshift ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/02/22/002139
Amazon Redshift ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/08/31/171754
Hiveテーブルデータ を Redshift に移行するには
https://dk521123.hatenablog.com/entry/2021/09/01/200818
Hiveテーブルデータ を Redshift に移行時のCOPYコマンドエラー
https://dk521123.hatenablog.com/entry/2021/09/03/134359
COPY コマンド ~ COPY FROM / TO ~
https://dk521123.hatenablog.com/entry/2020/06/11/112650