恢复已删除的表
本文档介绍了���何在 BigQuery 中恢复(或取消删除)已删除的表。您可以在为数据集指定的时间旅行窗口内恢复已删除的表,包括显式删除和基于表过期的隐式删除。您还可以配置时间旅行窗口。
如需了解如何恢复已删除的整个数据集或快照,请参阅以下资源:
时间旅行窗口的持续时间可以为 2 到 7 天。时间旅行窗口过后,BigQuery 会提供故障安全期,在该时间段内,已删除的数据会自动额外保留七天。故障安全期过后,您将无法使用任何方法(包括创建支持服务工单)恢复表。
准备工作
确保您拥有必要的 Identity and Access Management (IAM) 权限,以恢复已删除的表。
所需的角色
如需获得恢复已删除表所需的权限,请让您的管理员为您授予项目的 BigQuery User (roles/bigquery.user
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
恢复表
从历史数据恢复表时,源表中的标记不会复制到目标表中。
要恢复已删除但仍在时间旅行窗口内的表,您可以使用 @<time>
时间修饰符将该表复制到一个新表。如需复制表,您可以使用 bq 命令行工具或客户端库:
控制台
您无法使用 Google Cloud 控制台恢复删除的表。
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
如需恢复表,请先确定表存在时间的 UNIX 时间戳(以毫秒为单位)。您可以使用 Linux
date
命令通过常规时间戳值生成 Unix 时间戳:date -d '2023-08-04 16:00:34.456789Z' +%s000
然后,将
bq copy
命令与@<time>
时间旅行修饰器结合使用来执行表复制操作。例如,输入以下命令可将时间为
1418864998000
的mydataset.mytable
表复制到新表mydataset.newtable
。bq cp mydataset.mytable@1418864998000 mydataset.newtable
(可选)提供
--location
标志并将其值设置为您的位置。您还可以指定相对偏移量。以下示例复制一小时前表的版本:
bq cp mydataset.mytable@-3600000 mydataset.newtable
如需了解详情,请参阅从某个时间点恢复表。
Go
试用此示例之前,请按照 BigQuery 快速入门:使用客户端库中的 Go 设置说明进行操作。 如需了解详情,请参阅 BigQuery Go API 参考文档。
如需向 BigQuery 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
Java
试用此示例之前,请按照 BigQuery 快速入门:使用客户端库中的 Java 设置说明进行操作。 如需了解详情,请参阅 BigQuery Java API 参考文档。
如需向 BigQuery 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
Node.js
试用此示例之前,请按照 BigQuery 快速入门:使用客户端库中的 Node.js 设置说明进行操作。 如需了解详情,请参阅 BigQuery Node.js API 参考文档。
如需向 BigQuery 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
Python
试用此示例之前,请按照 BigQuery 快速入门:使用客户端库中的 Python 设置说明进行操作。 如需了解详情,请参阅 BigQuery Python API 参考文档。
如需向 BigQuery 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
如果您预计可能需要在时间旅行窗口允许的时间后恢复表,请创建该表的表快照。 如需了解详情,请参阅表快照简介。