1. BigQueryで複数のテーブルを一括削除する方法
BigQueryで複数のテーブル(dataset.table)を一括削除する方法をご紹介します。
BigQueryでテーブルを削除する方は様々ですが、今回は1パターンご紹介します。
1. Cloud Shellターミナルのbq コマンドでテーブルを削除
2. SQLでテーブルを削除(後日追記予定)
BigQueryやデータ分析に関するお仕事のご相談はTwitter、Linkedinからお願いいたします。
Cloud Shellターミナルのbqコマンドでテーブルを削除
前準備:削除テーブル一覧の用意
bqコマンドで一括削除するために、前準備を行います。
以下のクエリをBigQueryで実行することで、bqのテーブル削除コマンドの一覧を用意することができます。
SELECT
CONCAT("bq rm -f -t ",table_schema,".", table_name, ";" )
FROM データセット名.INFORMATION_SCHEMA.TABLES
WHERE
table_name LIKE "テーブル名_%"
ORDER BY table_name
上記のクエリの実行例をご紹介します。
例えば、overall_results.test_YYYYMMDDのようなテーブルがあったとします。
overall_results.test_20210901、overall_results.test_20210902、overall_results.test_20210903の3テーブルを削除したいとします。
この場合、以下のクエリを実行してbqコマンドの実行分を3行用意します。
SELECT
CONCAT("bq rm -f -t ",table_schema,".", table_name, ";" )
FROM overall_results.INFORMATION_SCHEMA.TABLES
WHERE
-- LIKEなどを用いて対象テーブルのみに絞り込みます
table_name LIKE "test_202109%"
ORDER BY table_name
以下は実行結果になります。
スプレッドシートに削除用コマンドをコピー
「SAVE RESULTS」からGoogleスプレッドシートにコピーします。
また、bqコマンドの実行文+空行をコピーします。
Cloud Shellの起動
Cloud Consoleからbqコマンドを利用するために、Cloud Shellをアクティブにする必要があります。
こちらのURLをクリックし、Cloud Shellをアクティブにします。
https://console.cloud.google.com/bigquery?cloudshell=true&hl=ja&_ga=2.45188900.1447178286.1633947971-2037873899.1633947971
Cloud Shellにコマンドをペースト
Cloud Shellにbqコマンドをペーストすると、削除が実行されます。
※誤ったテーブルが指定されていないか確認の上、ペーストすることをおすすめします。
これで削除が完了しました。
間違えて削除したテーブルの復元
間違えて削除したテーブルも7日以内であれば、テーブルを復元することができます。
bqコマンドで復元する例をご紹介します。
bq cp mydataset.mytable@1418864998000 mydataset.newtable
説明
bq cp データセット名.テーブル名@テーブルが存在していたときのUNIXタイムスタンプ データセット名.新しいテーブル名
参考記事
以下の記事でその他のテーブル削除方法が紹介されています。