管理人Kのひとりごと

デジモノレビューやプログラミングや写真など

RedshiftでS3からコピーするとき

RedshiftでCopyコマンドを使ってS3から取り込む際に気を付けること

S3を参照できるようにするための設定


/* hogeテーブルにCSVファイルを取り込むとき */
copy hoge from 's3://<取り込み元のCSVパス(ファイル名は含めない)>/' iam_role 'arn:aws:iam::123456789012:role/RedshiftS3CopyRole' delimiter ',';

フォルダ、ファイルあり/なしによる取り込み可否

1. フォルダあり、ファイルあり

/* 取り込まれる */
INFO:  Load into table 'hoge' completed, 10 record(s) loaded successfully.
COPY

2. フォルダあり、ファイルなし

/* 0件コピーとなり、エラーとならない */
INFO:  Load into table 'hoge' completed, 0 record(s) loaded successfully.
COPY

3. フォルダなし、ファイルなし

/* フォルダが見つからなくてエラーとなる */
ERROR:  The specified S3 prefix 'hoge-dir/' does not exist
DETAIL:
  -----------------------------------------------
  error:  The specified S3 prefix 'hoge-dir/' does not exist
  code:      8001
  context:
  query:     875
  location:  s3_utility.cpp:658
  process:   padbmaster [pid=2227]
  -----------------------------------------------

というわけで、ファイルはなくとも、フォルダは必要なようです。