BigQueryのビューをコマンドラインでコピーする

BigQueryのビューのコピーは普通だとWeb画面からのみ可能

あるビューを別のデータセットに複数コピーをしないといけない場面に遭遇した。Webの画面からコピーできるのは知っているが、数がちょっとあった & 何回もやって入力ミスがあると面倒だったのでコマンドでコピーをしたい。しかし、公式ではサポートされていない!

現在、ビューのコピーは Cloud Console を使用する場合に限り可能です。

コマンドラインで無理やりやる

頑張るとできなくはないので、方法をメモ。bq showjqでビューのSQLを抜き出し、bq mkでビューを作成すればOK。

bq mk --use_legacy_sql=false \
  --view (bq show --format=prettyjson my-src-project:dataset_name.table_name | jq -r '.view.query') \
  my-target-project:dataset_name.table_name

テーブル毎に権限付与などを行なっている場合、上記のコマンドだと権限はコピーできていないので注意。↓のような方法できっと権限コピーもできるんじゃないかな、多分。