tsvファイル出力(MySQL)とaws s3アップロード
RedShiftへのデータロードで、テーブルからcsvでダウンロードしてs3にアップロードします。txtファイルの出力とs3のアップロードについて書いていきます。
txtファイル
SQLファイルを作る
# dump.sql select * from c into outfile '/tmp/table_name.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; ...
tsvファイルをdump
mysql -u username -p database_name < dump.sql
s3へのアップロード
aws認証情報を登録
awsのIAMからaccess_key, secret_access_keyを取得、なければ作成する。defaultは登録されているので、プロファイル名は別で定義する。
$ aws configure --profile profile_name AWS Access Key ID [None]: access_key AWS Secret Access Key [None]: secret_access_key Default region name [None]: ap-northeast-1 Default output format [None]: json
shファイルを作る
syncコマンドを利用してアップロードします。shファイルを作ります。
# upload_to_s3.sh aws s3 sync /tmp/txts s3://bucket_name/txts --profile profile_name --exclude '*' --include '*.txt' ....
shファイルを実行
bash upload_to_s3.sh # 結果 move: /tmp/table_name.txt to s3://bucket_name/txts/table_name.txt # 成功 move failed: /tmp/table_name.txt to s3://bucket_name/txts/table_name.txt Could not connect to the endpoint URL: "endpoing" #失敗 ....
以上になります。
参考
AWS CLI の設定 - AWS Command Line Interface
AWS Command Line Interface での高レベルの S3 コマンドの使用 - AWS Command Line Interface
sync — AWS CLI 1.15.50 Command Reference
AWS CLI S3 Configuration — AWS CLI 1.15.50 Command Reference