CSVをS3経由でRedshiftへインポートするPowershell

カテゴリ : Powershell
公開日 : 2021/06/27 更新日 : 2021/07/06

環境

  • Windows 10 Pro 64bit
  • PowerShell 7.2.0-preview.3
  • AWS Tools for PowerShell Version 4.1.9.0
  • postgresql-9.3.25(psql)

コード

【】は各自環境の値で置換

set S3_BUCKETNAME "【CSVアップロード先S3バケット名】" -option constant
set LOCAL_CSV_LOCATION "【CSVファイル保存先ディレクトリ】" -option constant

Write-S3Object -BucketName $S3_BUCKETNAME -Folder $LOCAL_CSV_LOCATION -KeyPrefix /

set HOST "【Redshiftエンドポイント】" -option constant
set PORT 【ポート番号】 -option constant
set DBNAME "【データベース名】" -option constant
set USERNAME "【マスターユーザー名】" -option constant
set PASSWORD "【マスターユーザーパスワード】" -option constant
set REGION "【Redshiftリージョン】" -option constant

set AWS_ACCESS_KEY "【IAMユーザーのアクセスキー】" -option constant
set AWS_SECRET_ACCESS_KEY "【IAMユーザーのシークレットアクセスキー】" -option constant

$env:PGCLIENTENCODING = "UTF8"
$env:PGPASSWORD = $DB_PASSWORD

$table_name = ""
foreach ($s3_object in (Get-S3Object -BucketName $S3_BUCKETNAME -Prefix /)) {
    # table_name.csv -> table_name
    $table_name = $s3_object.Key.Split(".")[0]

    psql -h HOST -p $PORT -U $USERNAME -d $DBNAME -c ("copy " + $table_name + " from 's3://" + $S3_BUCKETNAME + "/" + $s3_object.Key + "' CSV credentials 'aws_access_key_id=" + $AWS_ACCESS_KEY + ";aws_secret_access_key=" + $AWS_SECRET_ACCESS_KEY + "' region '" + $REGION + "' IGNOREHEADER 1 EMPTYASNULL;") -a
}

Share

Blogger : rice

Twitter GitHub

SAP
DOP