きっかけ
コマンドライン(つまりはgcloudコマンド)でBigqueryにクエリを発行し、GCSにCSVを溜めたい要件があったのですが、公式ドキュメントを見ても下記の2つの例はあるものの、"これ"と言ったものがなかった。
やりたいこと
- bqコマンドでクエリ結果をGCSにCSVで格納
サンプル
下記が実際に通ったサンプルです。[]は適宜[]も含めて書き換えてください。
実行した環境は、google cloud shellです。
sample
bq query --nouse_legacy_sql 'EXPORT DATA OPTIONS(
uri="gs://GCSのpath/test/hoge_*.csv",format="CSV",overwrite=true,header=true,field_delimiter=";")
AS SELECT name FROM `[pj_id].[dataset_name].[table_name]` WHERE [条件]
ポイント
- WebコンソールでのQueryとは、シングルコート系のお作法が違う
- カッコ()内は"(ダブルコート)でくくります。
- クエリ内での[pj_id].[dataset_name].[table_name]は`(バックコート)でくくる
- GCSへ保存するファイル名の名前に"*"をつける。
- おそらく出力ファイルが大きくなったときに連番で保存される
- CSVの出力方法(ヘッダーの有無等)
- こちらを参照
#まとめ
リファレンスがなく類似記事がありそうであまりなかったので、bq query内でExport DATA OPTIONSを使ったあわせ技のお作法の参考になればと思います。