BigQuery でテーブルを正規表現を指定して削除する
背景
BigQuery で特定のテーブルをワイルドカードで指定して削除したいことがある。ところが、CLIコマンドである bq はそのようなワイルドカード指定はできない。
データセットのファイル一覧を出して、それを egrep で抽出する
下記の <dataset_name>
と、<regular expression>
にそれぞれ、データセット名と正規表現を書く。
bq --format json ls -n 10000 <dataset_name> | jq -r 'map("<dataset_name>."+ .tableReference.tableId)|.[]' | egrep '<regular expression>' | xargs -L1 bq rm -f
ただし、本当に望ましいファイルが対象となっているかを最後の削除を除いたコマンドである、
bq --format json ls -n 10000 <dataset_name> | jq -r 'map("<dataset_name>."+ .tableReference.tableId)|.[]' | egrep '<regular expression>'
で一旦確認したり、ファイル数を少なくして実行してみることをおすすめする。
追記
- 2018-06-12
.tableId
で取得できなくなっていたので、.tableReference.tableId
に修正