還原資料表快照
本文說明如何使用 Google Cloud 控制台、CREATE TABLE CLONE
查詢、bq cp
指令或 jobs.insert
API,從資料表快照建立可寫入的資料表。適合熟悉資料表快照的使用者。
權限與角色
本節說明從資料表快照建立可寫入資料表時,您需要的身分與存取權管理 (IAM) 權限,以及授予這些權限的預先定義 IAM 角色。
權限
如要從資料表快照建立可寫入的資料表,您需要下列權限:
權限 | 資源 |
---|---|
所有下列項目:bigquery.tables.get bigquery.tables.getData bigquery.tables.restoreSnapshot |
要複製到可寫入資料表的資料表快照。 |
bigquery.tables.create
|
包含目的地資料表的資料集。 |
角色
提供必要權限的預先定義 BigQuery 角色如下:
角色 | 資源 |
---|---|
下列任一項:bigquery.dataEditor bigquery.dataOwner bigquery.admin
|
要複製到可寫入資料表的資料表快照。 |
下列任一項:bigquery.dataEditor bigquery.dataOwner bigquery.admin
|
包含目的地資料表的資料集。 |
還原資料表快照
如要從快照建立可寫入的資料表,請指定要複製的資料表快照和目標資料表。目的地資料表可以是新資料表,也可以用資料表快照覆寫現有資料表。
還原至新資料表
您可以透過下列任一方式,將資料表快照還原至新資料表:
主控台
前往 Google Cloud 控制台的「BigQuery」頁面。
在左側窗格中,按一下「Explorer」
:如果沒有看到左側窗格,請按一下「展開左側窗格」圖示
開啟窗格。在「Explorer」窗格中展開專案,點選「Datasets」,然後點選包含要還原資料表快照的資料集。
依序點選「總覽」>「資料表」,然後按一下資料表快照的名稱。
在隨即顯示的表格快照窗格中,按一下「更新」還原。
在隨即顯示的「還原快照」窗格中,輸入新資料表的「專案」、「資料集」和「資料表」資訊。
按一下 [儲存]。
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」,然後點選包含要還原資料表快照的資料集。
依序點選「總覽」>「資料表」,然後按一下資料表快照的名稱。
在隨即顯示的表格快照窗格中,按一下「還原」。
在隨即顯示的「還原快照」窗格中,輸入現有資料表的「專案」、「資料集」和「資料表」資訊。
選取「覆寫資料表 (如有)」。
按一下 [儲存]。
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
:您要覆寫的資料表名稱。
如未指定到期時間,目的地資料表會在包含該資料表的資料集預設到期時間過後失效。