bigqueryでは、抽出したデータをcsvダウンロードすることができるが、
16,000行以上ある場合、一度、ストレージに格納してからダウンロードする必要がある。
今回は、それらを自動化する方法をクラウドシェルで実現・実装する。
個人メモ
※自動化ポイント1:テーブル名を指定する
※自動化ポイント2:ストレージのパスを指定する
※自動化ポイント3:csvのファイル名を指定する
※自動化ポイント4:utf8からsjisへの文字コード変換
※クラウドシェルは無料だよ!
#変数 --------------------------------------------------------
DATASET="sample_dataset" # BigQueryのデータセットを指定
BUCKET="gs://sample_bucket/sample_folder" # ストレージバケットを指定
TODAY=`date "+%Y%m%d_%H%M%S"`
OUTPUT=${HOME}"/output" # ホームディレクトリのフォルダを指定
#処理 --------------------------------------------------------
#テーブルリストを表示
echo テーブルリストは、下記です。
bq ls $DATASET |awk '{print $1}'
#入力
#※ここでテーブルを指定します。
echo -n ダウンロードするテーブル名を入力してください。:
read INP
FILE=${INP}_${TODAY}
#GCSにエクスポート
bq extract ${DATASET}.${INP} ${BUCKET}/${FILE}
#VMにコピー
gsutil cp ${BUCKET}/${FILE} ${OUTPUT}/${FILE}
#UTF8からsjisに文字コード変換
iconv -f UTF8 -t SJIS ${OUTPUT}/${FILE} > ${OUTPUT}/${FILE}.csv
#ローカルPCへダウンロード
cloudshell dl ${OUTPUT}/${FILE}.csv