もしBigQueryのテーブルを消してしまったら

疲れてたりするとうっかりBigQueryのテーブルやデータセットを消してしまうことありますよね?? でも大丈夫!BigQueryは最新2日間であれば1秒ごとに全データのスナップショットを取っているのです!

ただし削除された後に同名のテーブルが作成されるとスナップショットを参照できなくなります!

テーブルの復元方法

スナップショットには以下の構文でアクセスできます。

  • PROJECT_ID:DATASET.TABLE@<time>

<time>はエポックタイム(Unix Timestamp)で表わされます。 詳しい情報は以下のURLから。 https://cloud.google.com/bigquery/table-decorators?hl=ja

スナップショットをコピーするにはbqコマンドを使用します。 (インストール方法や使い方は以下のURLから https://cloud.google.com/bigquery/bq-command-line-tool?hl=ja)

安全に復旧するためには一度temporaryなデータセットにデータをコピーしてから、 元の場所にコピーしましょう。

例:

  1. dataset_name.table_nameのスナップショットをtmp_dataset.table_nameにコピー
    • bq cp dataset_name.table_name@1540869645 tmp_dataset.table_name
  2. tmp_dataset.table_namedataset_name.table_nameにコピー
    • bq cp tmp_dataset.table_name dataset_name.table_name

データセットごとやってしまった場合はこれをデータセット内の全テーブルに行うことでデータセットを復旧できます。
これでいつテーブルを消しても大丈夫!

参考: