建立資料表本機副本

本文說明如何使用 CREATE TABLE CLONE SQL 陳述式、bq cp 指令或 jobs.insert API 呼叫,將資料表複製到資料表複本。本文件適用於熟悉資料表複本的使用者。

權限與角色

本節說明建立資料表複本時所需的身分與存取權管理 (IAM) 權限,以及授予這些權限的預先定義 IAM 角色

權限

如要建立資料表複本,您必須具備下列權限:

權限 資源
以下所有項目:

bigquery.tables.get
bigquery.tables.getData
要複製的表格。
bigquery.tables.create
bigquery.tables.updateData
包含資料表複本的資料集。

角色

提供必要權限的預先定義 BigQuery 角色如下:

角色 資源
下列任一項:

bigquery.dataViewer
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
要複製的表格。
下列任一項:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
包含新表格複本的資料集。

建立表格複本

使用 GoogleSQL、bq 指令列工具或 BigQuery API 建立資料表複本。

SQL

如要複製資料表,請使用 CREATE TABLE CLONE 陳述式。

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery

  2. 在查詢編輯器中輸入以下陳述式:

    CREATE TABLE
    myproject.myDataset_backup.myTableClone
    CLONE myproject.myDataset.myTable;

  3. 按一下 「Run」

如要進一步瞭解如何執行查詢,請參閱「執行互動式查詢」一文。

更改下列內容:

  • PROJECT 是目標專案的專案 ID。這個專案必須與包含要複製的資料表的專案位於相同機構。
  • DATASET 是目標資料集的名稱。這個資料集必須與包含要複製資料表的資料集位於同一個地區。
  • CLONE_NAME 是您要建立的資料表複本名稱。

bq

使用加上 --clone 旗標的 bq cp 指令:

前往 Cloud Shell

bq cp --clone --no_clobber project1:myDataset.myTable PROJECT:DATASET.CLONE_NAME

更改下列內容:

  • PROJECT 是目標專案的專案 ID。這個專案必須與包含要複製的資料表的專案位於相同機構。
  • DATASET 是目標資料集的名稱。這個資料集必須與包含要複製資料表的資料集位於同一個地區。如果資料集與包含要複製資料表的資料集位於不同地區,系統會複製完整資料表。
  • CLONE_NAME 是您要建立的資料表複本名稱。

必須使用 --no_clobber 旗標。

如果您要在與基礎資料表相同的專案中建立複本,可以略過指定專案,如下所示:

bq cp --clone --no_clobber myDataset.myTable DATASET.CLONE_NAME

API

呼叫 jobs.insert 方法,並將 operationType 欄位設為 CLONE

參數
projectId 執行工作的專案專案 ID。
要求主體
{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "myProject",
          "datasetId": "myDataset",
          "tableId": "myTable"
        }
      ],
      "destinationTable": {
        "projectId": "PROJECT",
        "datasetId": "DATASET",
        "tableId": "CLONE_NAME"
      },
      "operationType": "CLONE",
      "writeDisposition": "WRITE_EMPTY",
    }
  }
}

更改下列內容:

  • PROJECT 是目標專案的專案 ID。這個專案必須與包含要複製的資料表的專案位於相同機構。
  • DATASET 是目標資料集的名稱。這個資料集必須與包含要複製資料表的資料集位於同一個地區。如果資料集與包含要複製資料表的資料集位於不同地區,系統會複製完整的資料表。
  • CLONE_NAME 是您要建立的資料表複本名稱。

存取權控管

建立表格複本時,系統會將表格複本的存取權設為以下方式:

  • 資料列層級存取權政策從基礎資料表複製到資料表複本。
  • 系統會將資料欄層級存取權政策從基礎資料表複製到資料表複本。
  • 資料表層級存取權的判斷方式如下:

    • 如果資料表複本覆寫現有資料表,則現有資料表的資料表層級存取權會保留。系統不會從基本資料表複製標記
    • 如果資料表複本是新的資源,則資料表複本的資料表層級存取權,取決於建立資料表複本的資料集的存取權政策。此外,標記會從基本資料表複製到資料表本機副本。

後續步驟

  • 建立表格複本後,您可以像使用標準表格一樣使用該複本。詳情請參閱「管理資料表」。