還原資料表快照
本文說明如何使用 Google Cloud 控制台、CREATE TABLE CLONE查詢、bq cp指令或 jobs.insert API,從資料表快照建立可寫入的資料表。適合熟悉資料表快照的使用者。
權限與角色
本節說明從資料表快照建立可寫入資料表所需的 Identity and Access Management (IAM) 權限,以及授予這些權限的預先定義 IAM 角色。
權限
如要從資料表快照建立可寫入的資料表,您必須具備下列權限:
| 權限 | 資源 |
|---|---|
符合下列所有條件:bigquery.tables.getbigquery.tables.getDatabigquery.tables.restoreSnapshot |
要複製到可寫入資料表的資料表快照。 |
bigquery.tables.create
|
包含目的地資料表的資料集。 |
角色
提供必要權限的預先定義 BigQuery 角色如下:
| 角色 | 資源 |
|---|---|
下列任一項:bigquery.dataEditorbigquery.dataOwnerbigquery.admin
|
要複製到可寫入資料表的資料表快照。 |
下列任一項:bigquery.dataEditorbigquery.dataOwnerbigquery.admin
|
包含目的地資料表的資料集。 |
還原資料表快照
如要從快照建立可寫入的資料表,請指定要複製的資料表快照和目的地資料表。目的地資料表可以是新資料表,也可以使用資料表快照覆寫現有資料表。
還原至新資料表
您可以使用下列任一選項,將資料表快照還原至新資料表:
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

如果沒有看到左側窗格,請按一下 「Expand left pane」(展開左側窗格),開啟窗格。
在「Explorer」窗格中展開專案,依序點選「Datasets」(資料集) 和要還原的資料表快照所屬資料集。
依序點選「Overview」(總覽) > 「Tables」(資料表),然後按一下資料表快照的名稱。
在隨即顯示的資料表快照窗格中,按一下「update」(更新) 「Restore」(還原)。

在顯示的「Restore snapshot」(還原快照) 窗格中,輸入新資料表的「Project」(專案)、「Dataset」(資料集) 和「Table」(資料表) 資訊。
按一下 [儲存]。
SQL
使用 CREATE TABLE CLONE DDL 陳述式:
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CREATE TABLE TABLE_PROJECT_ID.TABLE_DATASET_NAME.NEW_TABLE_NAME CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;
替換下列內容:
TABLE_PROJECT_ID:要建立新資料表的專案 ID。TABLE_DATASET_NAME:要在其中建立新資料表的資料集名稱。NEW_TABLE_NAME:新資料表的名稱。SNAPSHOT_PROJECT_ID:專案 ID,用於存放您要還原的快照。SNAPSHOT_DATASET_NAME:資料集名稱,其中包含要還原的快照。SNAPSHOT_NAME:要還原的快照名稱。
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
bq
在 Cloud Shell 中輸入下列指令:
bq cp \ --restore \ --no_clobber \ SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME \ TABLE_PROJECT_ID:TABLE_DATASET_NAME.NEW_TABLE_NAME
替換下列內容:
SNAPSHOT_PROJECT_ID:專案 ID,用於存放您要還原的快照。SNAPSHOT_DATASET_NAME:資料集名稱,其中包含要還原的快照。SNAPSHOT_NAME:要還原的快照名稱。TABLE_PROJECT_ID:要建立新資料表的專案 ID。TABLE_DATASET_NAME:要在其中建立新資料表的資料集名稱。NEW_TABLE_NAME:新資料表的名稱。
如果目的地資料表已存在,--no_clobber 旗標會指示指令失敗。
API
使用下列參數呼叫 jobs.insert 方法:
| 參數 | 值 |
|---|---|
projectId |
這項作業的計費專案 ID。 |
| 要求主體 | { "configuration": { "copy": { "sourceTables": [ { "projectId": "SNAPSHOT_PROJECT_ID", "datasetId": "SNAPSHOT_DATASET_NAME", "tableId": "SNAPSHOT_NAME" } ], "destinationTable": { "projectId": "TABLE_PROJECT_ID", "datasetId": "TABLE_DATASET_NAME", "tableId": "NEW_TABLE_NAME" }, "operationType": "RESTORE", "writeDisposition": "WRITE_EMPTY" } } } |
替換下列內容:
SNAPSHOT_PROJECT_ID:專案 ID,用於存放您要還原的快照。SNAPSHOT_DATASET_NAME:資料集名稱,其中包含要還原的快照。SNAPSHOT_NAME:要還原的快照名稱。TABLE_PROJECT_ID:要建立新資料表的專案 ID。TABLE_DATASET_NAME:要在其中建立新資料表的資料集名稱。NEW_TABLE_NAME:新資料表的名稱。
如未指定到期時間,目的地資料表會在包含該資料表的資料集預設資料表到期時間後到期。
覆寫現有資料表
您可以使用下列任一選項,以資料表快照覆寫現有資料表:
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

在「Explorer」窗格中展開專案,點選「Datasets」(資料集),然後點選要還原的資料表快照所在的資料集。
依序點選「Overview」(總覽) >「Tables」(資料表),然後按一下資料表快照的名稱。
在隨即顯示的資料表快照窗格中,按一下「還原」。

在顯示的「Restore snapshot」(還原快照) 窗格中,輸入現有資料表的「Project」(專案)、「Dataset」(資料集) 和「Table」(資料表) 資訊。
選取「覆寫資料表 (如有)」。
按一下 [儲存]。
SQL
使用 CREATE TABLE CLONE DDL 陳述式:
前往 Google Cloud 控制台的「BigQuery」頁面。
在查詢編輯器中輸入下列陳述式:
CREATE OR REPLACE TABLE TABLE_PROJECT_ID.TABLE_DATASET_NAME.TABLE_NAME CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;
替換下列內容:
TABLE_PROJECT_ID:要建立新資料表的專案 ID。TABLE_DATASET_NAME:資料集名稱,其中包含要覆寫的資料表。TABLE_NAME:: 要覆寫的資料表名稱。SNAPSHOT_PROJECT_ID:專案 ID,用於存放您要還原的快照。SNAPSHOT_DATASET_NAME:資料集名稱,其中包含要還原的快照。SNAPSHOT_NAME:要還原的快照名稱。
按一下「 執行」。
如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」。
bq
在 Cloud Shell 中輸入下列指令:
bq cp \ --restore \ --force \ SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME \ TABLE_PROJECT_ID:TABLE_DATASET_NAME.TABLE_NAME
替換下列內容:
SNAPSHOT_PROJECT_ID:專案 ID,用於存放您要還原的快照。SNAPSHOT_DATASET_NAME:資料集名稱,其中包含要還原的快照。SNAPSHOT_NAME:要還原的快照名稱。TABLE_PROJECT_ID:要建立新資料表的專案 ID。TABLE_DATASET_NAME:資料集名稱,其中包含要覆寫的資料表。TABLE_NAME:要覆寫的資料表名稱。
API
使用下列參數呼叫 jobs.insert 方法:
| 參數 | 值 |
|---|---|
projectId |
這項作業的計費專案 ID。 |
| 要求主體 | { "configuration": { "copy": { "sourceTables": [ { "projectId": "SNAPSHOT_PROJECT_ID", "datasetId": "SNAPSHOT_DATASET_NAME", "tableId": "SNAPSHOT_NAME" } ], "destinationTable": { "projectId": "TABLE_PROJECT_ID", "datasetId": "TABLE_DATASET_NAME", "tableId": "TABLE_NAME" }, "operationType": "RESTORE", "writeDisposition": "WRITE_TRUNCATE" } } } |
替換下列內容:
SNAPSHOT_PROJECT_ID:專案 ID,用於存放您要還原的快照。SNAPSHOT_DATASET_NAME:資料集名稱,其中包含要還原的快照。SNAPSHOT_NAME:要還原的快照名稱。TABLE_PROJECT_ID:要建立新資料表的專案 ID。TABLE_DATASET_NAME:資料集名稱,其中包含要覆寫的資料表。TABLE_NAME:要覆寫的資料表名稱。
如未指定到期時間,目的地資料表會在包含該資料表的資料集預設資料表到期時間後到期。