還原已刪除的資料表
本文件說明如何在 BigQuery 中還原 (或「取消刪除」) 已刪除的資料表。您可以在資料集指定的時間回溯期內還原已刪除的資料表,包括明確刪除和因資料表到期而隱含刪除的資料表。您也可以設定時間旅行視窗。
如要瞭解如何還原整個已刪除的資料集或快照,請參閱下列資源:
時間回溯期的長度介於 2 到 7 天。時間回溯期間結束後,BigQuery 會提供安全防護期,在這個期間內,系統會自動保留已刪除的資料七天。安全防護期過後,就無法使用任何方法還原資料表,包括開立支援單。
事前準備
確認您具備必要的身分與存取權管理 (IAM) 權限,才能還原已刪除的資料表。
必要的角色
如要取得還原已刪除資料表所需的權限,請要求管理員為您授予專案的 BigQuery 使用者 (roles/bigquery.user
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
還原資料表
從記錄資料還原資料表時,系統不會將來源資料表的標記複製到目標資料表。
您可以使用 @<time>
時間修飾符,將資料表複製到新表格,藉此還原已刪除但仍在時間旅行視窗內的資料表。如要複製資料表,您可以使用 bq 指令列工具或用戶端程式庫:
主控台
您無法使用 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 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
如果您預期可能會在時間旅行視窗允許的時間之後還原資料表,請建立資料表的快照。詳情請參閱「資料表快照簡介」。