恢复表快照
本文档介绍如何使用 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
中,如下所示:
控制台
在 Cloud Console 中,转到 BigQuery 页面。
在探索器窗格中,展开要从中恢复的表快照(在本例中为
library_backup.books
)的项目和数据集节点。在出现的表快照窗格中,点击恢复。
在出现的恢复快照窗格中,为目标表输入项目、数据集 ID 和表名称。
如需使用表快照中的数据覆盖现有表,请选择如果表已存在则进行覆盖。如果未选择此选项,并且目标表已存在,则会收到错误。
点击恢复。
SQL
请运行以下查询:
CREATE TABLE library.books_new CLONE library_backup.books
bq
在 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
,如下所示:
控制台
在 Cloud Console 中,转到 BigQuery 页面。
在探索器窗格中,展开要从中恢复的表快照(在本例中为
library_backup.books
)的项目和数据集节点。在出现的表快照窗格中,点击恢复。
在出现的恢复快照窗格中,为要覆盖的表输入项目、数据集 ID 和表名称。
点击恢复。
SQL
请运行以下查询:
CREATE OR REPLACE TABLE library.books CLONE library_backup.books
bq
在 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
数据集)的默认表到期时间之后过期。