COPY コマンドを使用した Amazon S3 からのロード - Amazon Redshift

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

COPY コマンドを使用した Amazon S3 からのロード

を使用するにはCOPYコマンドを使い、Amazon S3 のデータファイルからテーブルを並列でロードします。Amazon S3 オブジェクトプレフィックスまたはマニフェストファイルを使用して、ロードするファイルを指定できます。

プレフィックスを使ってロードするファイルを指定するための構文は次のようになります。

copy <table_name> from 's3://<bucket_name>/<object_prefix>' authorization;

マニフェストファイルは、ロードするデータファイルのリストを指定する JSON 形式のファイルです。マニフェストファイルを使ってロードするファイルを指定するための構文は次のようになります。

copy <table_name> from 's3://<bucket_name>/<manifest_file>' authorization manifest;

ロードするテーブルはデータベースに存在している必要があります。テーブルの作成に関する詳細は、SQL リファレンスの「CREATE TABLE」を参照してください。

の値は次のとおりです。authorizationクラスターが Amazon S3 オブジェクトにアクセスするために必要な AWS 認証を提供します。必要なアクセス権限については、「COPY、UNLOAD、CREATE LIBRARY のための IAM のアクセス許可」を参照してください。推奨の認証方法は、IAM_ROLE パラメータを指定して、必要なアクセス権限がある IAM ロールの Amazon リソースネーム (ARN) を提供することです。または、ACCESS_KEY_ID パラメータと SECRET_ACCESS_KEY パラメータを指定して、認証済み IAM ユーザーのアクセスキー ID とシークレットアクセスキーをプレーンテキストで提供することもできます。詳細については、「ロールベースアクセスコントロール」または「キーベースのアクセスコントロール」を参照してください。

IAM_ROLE パラメータを使用して認証するには、以下を置き換えます。<aws-account-id> および <role-name> 次の構文で示します。

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'

次の例で、IAM ロールを使用した認証を示します。

copy customer from 's3://mybucket/mydata' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

IAM ユーザー認証情報を使用して認証するには、<access-key-id> および <secret-access-key 次に示すように、承認されたユーザーのアクセスキー ID および完全なシークレットアクセスキーで、ACCESS_KEY_ID パラメータと SECRET_ACCESS_KEY パラメータのアクセスキー ID と完全なシークレットアクセスキーを使用します

ACCESS_KEY_ID '<access-key-id>' SECRET_ACCESS_KEY '<secret-access-key>';

次の例で、IAM ユーザー認証情報を使用した認証を示します。

copy customer from 's3://mybucket/mydata' access_key_id '<access-key-id>' secret_access_key '<secret-access-key';

他の認証オプションの詳細については、「認証パラメータ」を参照してください。

テーブルを実際にロードせずにデータを検証する場合、COPY コマンドに NOLOAD オプションを指定します。

次の例では、「venue.txt」という名前のファイルのパイプ区切りデータの最初の数行を示しています。

1|Toyota Park|Bridgeview|IL|0 2|Columbus Crew Stadium|Columbus|OH|0 3|RFK Stadium|Washington|DC|0

ファイルを Amazon S3 にアップロードする前に、ファイルを複数のファイルに分割します。分割されたファイルは COPY コマンドで並列処理を使用してロードされます。ファイルの数はクラスター内のスライスの数の倍数である必要があります。ロードデータファイルを分割して大体同じサイズにし、圧縮後に 1 MB ~ 1 GB になるようにします。詳細については、「データを複数のファイルに分割する」を参照してください。

例えば、venue.txt ファイルを次のように 4 つのファイルに分割します。

venue.txt.1 venue.txt.2 venue.txt.3 venue.txt.4

次の COPY コマンドは、Amazon S3 バケット内のプレフィックスが「venue」になっているデータファイルのパイプ区切りデータを使用して VENUE テーブルをロードします。mybucket

注記

Amazon S3 バケットmybucket次の例のは存在しません。既存の Amazon S3 バケットの実データを使用するサンプルの COPY コマンドについては、「」を参照してください。 ステップ 4: サンプルデータをロードする

copy venue from 's3://mybucket/venue' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' delimiter '|';

「venue」というkey prefix ある Amazon S3 オブジェクトが存在しない場合、ロードは失敗します。