マニフェストを使用し、データファイルを指定する
COPY コマンドにより必要なすべてのファイルのみがロードされるように、データロードにマニフェストを使用できます。マニフェストを使用し、異なるバケットからファイルをロードしたり、同じプレフィックスを共有しないファイルをロードしたりできます。この場合、COPY コマンドにオブジェクトパスを指定する代わりに、ロードするファイルのリストを JSON 形式のテキストファイルに明示的に指定します。マニフェスト内の URL ではプレフィックスだけでなく、バケットの名前とファイルの完全なオブジェクトパスを指定しておく必要があります。
マニフェストファイルの詳細については、「マニフェストを使用し、データファイルを指定する」を参照してください。
次の例では、バケットが異なり、ファイル名が日付スタンプで始まるファイルをロードする JSON を示しています。
{ "entries": [ {"url":"s3://amzn-s3-demo-bucket1/2013-10-04-custdata", "mandatory":true}, {"url":"s3://amzn-s3-demo-bucket1/2013-10-05-custdata", "mandatory":true}, {"url":"s3://amzn-s3-demo-bucket2/2013-10-04-custdata", "mandatory":true}, {"url":"s3://amzn-s3-demo-bucket2/2013-10-05-custdata", "mandatory":true} ] }
ファイルが見つからない場合に、オプションの mandatory
フラグによって COPY コマンドがエラーを返すかどうかを指定します。mandatory
のデフォルトは false
です。mandatory 設定と関係なく、どのファイルも見つからない場合、COPY は終了します。
次の例では、前の例にあった「cust.manifest
」という名前のマニフェストで COPY コマンドを実行しています。
COPY customer FROM 's3://amzn-s3-demo-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://amzn-s3-demo-bucket/unload/manifest_0000_part_00", "meta": { "content_length": 5956875 }}, {"url":"s3://amzn-s3-demo-bucket/unload/unload/manifest_0001_part_00", "meta": { "content_length": 5997091 }} ] }
マニフェストファイルについて詳しくは、「Example: COPY from Amazon S3 using a manifest」を参照してください。