创建表克隆

本文档介绍如何使用 CREATE TABLE CLONE SQL 语句、bq cp 命令或 jobs.insert API 调用将表复制到表克隆。本文档适用于熟悉表克隆的用户。

权限和角色

本部分介绍了创建表克隆所需的 Identity and Access Management (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. 点击 运行

如需详细了解如何运行查询,请参阅运行交互式查询

替换以下内容:

  • PROJECT 是目标项目的 ID。此项目必须与您要克隆的表所属的项目位于同一组织。
  • DATASET:目标数据集的名称。 此数据集必须与您要克隆的表所属的数据集位于同一区域。
  • CLONE_NAME 是您要创建的表克隆的名称。

bq

使用带有 --clone 标志的 bq cp 命令:

转到 Cloud Shell

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

请替换以下内容:

  • PROJECT 是目标项目的 ID。此项目必须与您要克隆的表所属的项目位于同一组织。
  • DATASET:目标数据集的名称。 此数据集必须与您要克隆的表所属的数据集位于同一区域。如果此数据集与要克隆的表所属的数据集不在同一区域,则会复制整个表。
  • CLONE_NAME 是您要创建的表克隆的名称。

如果您要在基表所在的项目中创建克隆,则可以跳过指定项目,如下所示:

bq cp --clone -n 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 是您要创建的表克隆的名称。

访问权限控制

创建表克隆时,对表克隆的访问权限设置如下:

  • 行级访问权限政策会从基表复制到表克隆。
  • 列级访问权限政策会从基表复制到表克隆。
  • 表级访问权限按以下方式确定:

    • 如果表克隆会覆盖现有表,则系统会保留现有表的表级访问权限。 不会从基表复制标记
    • 如果表克隆是一项新资源,则表克隆的表级访问权限将由在其中创建该表克隆的数据集的访问权限政策来决定。 此外,标记会从基表复制到表克隆。

后续步骤

  • 创建表克隆后,您便可以像使用标准表一样使用它。如需了解详情,请参阅管理表