Redshift COPY ShellCommandActivity command PGPASSFILE

ShellCommandActivity command

DBHOST=xxxxxxxxxxxxxx.ap-xxxxxx.redshift.amazonaws.com
DBPORT=5439
DBNAME=xxxx
DBUSER=xxxxxx
DBPASS=xxxxxxxxx
S3PATH=s3://uploads/file.csv

AWS_ACCESS_KEY_ID=xxxxxxxx
AWS_SECRET_ACCESS_KEY=xxxxxxxxxx

cat >$PGPASSFILE << EOF
$DBHOST:$DBPORT:$DBNAME:$DBUSER:$DBPASS
EOF

at > $cmds << EOF
copy $DBSTAGEINGTABLE from '$S3PATH' CREDENTIALS 'aws_access_key_id=$AWS_ACCESS_KEY_ID;aws_secret_access_key=$AWS_SECRET_ACCESS_KEY' CSV DELIMITER ',' MAXERROR 100000 IGNOREHEADER 1 TIMEFORMAT AS 'auto';
EOF
  psql -d $DBNAME -h $DBHOST -p $DBPORT -U $DBUSER -f $cmds

注意点とか

  • AWSACCESSKEYID,AWSSECRETACCESSKEY 権限絞ったアカウントを用意しておくこと
  • CSV DELIMITER オプションは対象ファイルによって変える
  • IGNOREHEADER ヘッダ行があるなら指定する
  • TIMEFORMAT AS 'auto' タイムスタンプ型のカラムがあるなら指定しておく

参考

Scheduled Copy of Data from Amazon S3 to Amazon Redshift Using AWS Data Pipeline

arrow_back

Previous

PythonでUnicode正規化と全角半角変換

Next

Redshift COPY Delimiter not found
arrow_forward