MENU

BigQuery の bq コマンドでテーブルを復元する

この記事では、bq コマンドを使用して、特定の時点のテーブルを復元する方法を紹介しています。(※最大、過去 7 日間まで遡ることができます。)

間違えてテーブルを削除したり、データを追加・更新したりしたときに知っていると便利です。

目次

まとめ

# 方法1:エポックミリ秒を指定
$ bq cp DATESET.TABLE@EPOCH_MILLISECONDS DATESET.TABLE

# 方法2:現在時刻との相対オフセット(ミリ秒)を指定
$ bq cp DATESET.TABLE@-MILLISECONDS DATESET.TABLE

# 方法3:復元可能な最古の履歴データを指定
$ bq cp DATESET.TABLE@0 DATESET.TABLE

解説

まず、bq コマンドを使用する前に、復元したいテーブルにアクセスできるアカウントとプロジェクトに切り替えておきましょう。

# アカウントの切り替え
$ gcloud auth login

# プロジェクトの切り替え
$ gcloud config set project PROJECT_ID

エポックミリ秒を指定

$ bq cp DATESET.TABLE@EPOCH_MILLISECONDS DATESET.TABLE

この記事を書いている日時が 2022 年 3 月 26 日 0 時 なので、例えば 1 日前の 2022 年 3 月 25 日 9 時 30 分 時点のテーブルを復元したいとすると、以下のようになります。

$ bq cp DATESET.TABLE@1647909000000 DATESET.TABLE

日時からエポックミリ秒に変換するときは以下の SQL を参考にしてみてください。

SELECT UNIX_MILLIS(TIMESTAMP("2022-03-22T09:30:00", "Asia/Tokyo"))
# 1647909000000

現在時刻との相対オフセットを指定

$ bq cp DATESET.TABLE@-MILLISECONDS DATESET.TABLE

現在時刻から 1 時間前のテーブルに復元したい場合は、相対オフセットを使用してミリ秒単位で指定します。

$ bq cp DATESET.TABLE@-3600000 DATESET.TABLE
時間ミリ秒
10 分前600000
1 時間前3600000
1 日前86400000

復元可能な最古の履歴データを指定

$ bq cp DATESET.TABLE@0 DATESET.TABLE

この記事が気に入ったら
フォローしてね!

シェアしていただけると励みになります
  • URLをコピーしました!

コメント

コメントする

目次
閉じる