還原已刪除的資料表
本文說明如何在 BigQuery 中還原 (或取消刪除) 已刪除的資料表。您可以在資料集指定的時間回溯期內,還原已刪除的資料表,包括因資料表到期而明確刪除和隱含刪除的資料表。您也可以設定時間旅行視窗。
如要瞭解如何還原整個已刪除的資料集或快照,請參閱下列資源:
時間回溯期可介於兩天到七天。時間回溯期限過後,BigQuery 會提供安全期,自動保留已刪除的資料七天。安全期過後,您就無法使用任何方法還原表格,包括提交支援單。
事前準備
確認您具備必要的身分與存取權管理 (IAM) 權限,可還原已刪除的資料表。
必要的角色
如要取得還原已刪除資料表所需的權限,請要求管理員授予您專案的 BigQuery 使用者 (roles/bigquery.user
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
還原資料表
從歷史資料還原資料表時,來源資料表的標記不會複製到目的地資料表。
如要還原已刪除但仍在時間旅行視窗內的資料表,請使用 @<time>
時間修飾符將資料表複製到新資料表。即使使用時間修飾符,您也無法查詢已刪除的資料表。你必須先還原。
如要還原資料表,請選取下列其中一個選項:
主控台
您無法使用 Google Cloud 控制台還原已刪除的資料表。
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
如要還原資料表,請先確定資料表存在時間的 UNIX 時間戳記 (以毫秒為單位)。您可以使用 Linux
date
指令,從一般時間戳記值產生 Unix 時間戳記:date -d '2023-08-04 16:00:34.456789Z' +%s000
接著,使用
bq copy
指令搭配@<time>
時空旅行修飾符,執行資料表複製作業。舉例來說,請輸入下列指令,將時間為
1418864998000
的mydataset.mytable
資料表複製到新的資料表mydataset.newtable
中。bq cp mydataset.mytable@1418864998000 mydataset.newtable
(選用) 提供
--location
旗標,並將值設為您的位置。您也可以指定相對偏移量。以下範例會複製一小時前的資料表版本:
bq cp mydataset.mytable@-3600000 mydataset.newtable
詳情請參閱從時間點還原資料表。
Go
在試行這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Go 設定說明進行操作。詳情請參閱 BigQuery Go API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
在試行這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Java 設定說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
在試行這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Node.js 設定說明進行操作。詳情請參閱 BigQuery Node.js API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
在試行這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
如果您預期之後可能會還原資料表,但時間超出時空旅行時間範圍,請建立資料表的快照。詳情請參閱資料表快照簡介。