恢复表快照

本文档介绍如何使用 Google Cloud Console、CREATE TABLE CLONE 查询、bq cp 命令或 jobs.insert API 通过表快照创建一个可写表。本文档适用于熟悉表快照的用户。

权限和角色

本部分介绍通过表快照创建可写表所需的 Identity and Access Management (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
包含目标表的数据集。

恢复表快照

如需通过快照创建可写表,请指定要复制的表快照及目标表。目标表可以是新表,也可以使用表快照覆盖现有表。

恢复到新表

例如,将表快照 library_backup.books 恢复到新表 library.books_new 中,如下所示:

控制台

  1. 在 Cloud Console 中,转到 BigQuery 页面。

    转到 BigQuery

  2. 探索器窗格中,展开要从中恢复的表快照(在本例中为 library_backup.books)的项目和数据集节点。

  3. 在出现的表快照窗格中,点击恢复

    从快照恢复表

  4. 在出现的恢复快照窗格中,为目标表输入项目数据集 ID表名称

  5. 如需使用表快照中的数据覆盖现有表,请选择如果表已存在则进行覆盖。如果未选择此选项,并且目标表已存在,则会收到错误。

  6. 点击恢复

SQL

请运行以下查询:

CREATE TABLE library.books_new
  CLONE library_backup.books

bq

在 Cloud Shell 中输入以下命令:

转到 Cloud Shell

bq cp --restore --no_clobber library_backup.books library.books_new

--no_clobber 标志指示如果目标表已存在,则该命令失败。

API

使用以下参数调用 jobs.insert 方法:

参数
projectId myProject
请求正文

{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "myProject",
          "datasetId": "library_backup",
          "tableId": "books"
        }
      ],
      "destinationTable": {
        "projectId": "myProject",
        "datasetId": "library",
        "tableId": "books_new"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_EMPTY"
    }
  }
}

如果未指定到期时间,则目标表将在包含目标表的数据集(在本例中为 library 数据集)的默认表到期时间之后过期。

覆盖现有表

通过覆盖现有表 library.books 来恢复表快照 library_backup.books,如下所示:

控制台

  1. 在 Cloud Console 中,转到 BigQuery 页面。

    转到 BigQuery

  2. 探索器窗格中,展开要从中恢复的表快照(在本例中为 library_backup.books)的项目和数据集节点。

  3. 在出现的表快照窗格中,点击恢复

    从快照恢复表

  4. 在出现的恢复快照窗格中,为要覆盖的表输入项目数据集 ID表名称

  5. 点击恢复

SQL

请运行以下查询:

CREATE OR REPLACE TABLE
  library.books
  CLONE library_backup.books

bq

在 Cloud Shell 中输入以下命令:

转到 Cloud Shell

bq cp --restore --force library_backup.books library.books

API

使用以下参数调用 jobs.insert 方法:

参数
projectId myProject
请求正文

{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "myProject",
          "datasetId": "library_backup",
          "tableId": "books"
        }
      ],
      "destinationTable": {
        "projectId": "myProject",
        "datasetId": "library",
        "tableId": "books"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_TRUNCATE"
    }
  }
}

如果未指定到期时间,则目标表将在包含目标表的数据集(在本例中为 library 数据集)的默认表到期时间之后过期。

后续步骤