マニフェストを使用し、データファイルを指定する - Amazon Redshift

マニフェストを使用し、データファイルを指定する

COPY コマンドにより必要なすべてのファイルのみがロードされるように、データロードにマニフェストを使用できます。マニフェストを使用し、異なるバケットからファイルをロードしたり、同じプレフィックスを共有しないファイルをロードしたりできます。この場合、COPY コマンドにオブジェクトパスを指定する代わりに、ロードするファイルのリストを JSON 形式のテキストファイルに明示的に指定します。マニフェスト内の URL ではプレフィックスだけでなく、バケットの名前とファイルの完全なオブジェクトパスを指定しておく必要があります。

マニフェストファイルの詳細については、「マニフェストを使用し、データファイルを指定する」を参照してください。

次の例では、バケットが異なり、ファイル名が日付スタンプで始まるファイルをロードする JSON を示しています。

{ "entries": [ {"url":"s3://DOC-EXAMPLE-BUCKET1/2013-10-04-custdata", "mandatory":true}, {"url":"s3://DOC-EXAMPLE-BUCKET1/2013-10-05-custdata", "mandatory":true}, {"url":"s3://DOC-EXAMPLE-BUCKET2/2013-10-04-custdata", "mandatory":true}, {"url":"s3://DOC-EXAMPLE-BUCKET2/2013-10-05-custdata", "mandatory":true} ] }

ファイルが見つからない場合に、オプションの mandatory フラグによって COPY コマンドがエラーを返すかどうかを指定します。mandatory のデフォルトは false です。mandatory 設定と関係なく、どのファイルも見つからない場合、COPY は終了します。

次の例では、前の例にあった「cust.manifest」という名前のマニフェストで COPY コマンドを実行しています。

COPY customer FROM 's3://DOC-EXAMPLE-BUCKET/cust.manifest' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' MANIFEST;

UNLOAD で作成されたマニフェストの使用

MANIFEST パラメータを使用して UNLOAD オペレーションで作成したマニフェストには、COPY オペレーションに必要ないキーが含まれている場合があります。例えば、次の UNLOAD マニフェストには、Amazon Redshift Spectrum の外部テーブルと ORC または Parquet ファイル形式でデータファイルをロードするのに必要な meta キーが含まれています。meta キーには、ファイルの実際のサイズの値 (バイト) の content_length キーが含まれます。COPY オペレーションに必要なのは url キーとオプションの mandatory キーのみです。

{ "entries": [ {"url":"s3://DOC-EXAMPLE-BUCKET/unload/manifest_0000_part_00", "meta": { "content_length": 5956875 }}, {"url":"s3://DOC-EXAMPLE-BUCKET/unload/unload/manifest_0001_part_00", "meta": { "content_length": 5997091 }} ] }

マニフェストファイルについて詳しくは、「Example: COPY from Amazon S3 using a manifest」を参照してください。