BigQuery - 删除和恢复表

在 BigQuery 中删除表

删除表提供相同的两个选项:UI 和 SQL 语法。要在 UI 中删除表,只需选择要删除的表并选择"删除表"。由于这是一项永久性操作,因此系统会提示您在删除之前输入表名称。

注意 −您还可以在 SQL 环境中删除表。

在 BigQuery 中删除表

仅删除表的内容保留其中的数据,您可以使用需要 WHERE 子句的 DELETE 命令。

删除任何不带参数的内容,您可以使用以下查询 −

DELETE FROM project.dataset.table
WHERE 1=1

注意 −请谨慎使用此查询。

在 BigQuery 中恢复表

尽管删除过程分为两步,但仍然很有可能意外删除或删除表。因此,BigQuery 的创建者意识到可能需要为用户提供一种恢复过早删除的表的方法。

BigQuery 表快照

在 SQL 环境中创建和使用表时,这一点并不明显,但在后台,BigQuery 会自动保存您的工作 – 在一定程度上。

BigQuery 使用"快照"定期保存表,以便在需要时提供即时备份。需要注意的是,如果用户从快照中恢复表,他们实际上并没有恢复其原始表 – 他们只是恢复到表的快照或副本。

此工具并非没有限制。 BigQuery 表快照仅持续 7 天。因此,只能在初始删除后的 7 天内恢复已删除的表。

恢复表的两种方法

BigQuery 提供了两种恢复表的方法。顺便说一句,它们都不使用 BigQuery SQL。它们需要通过 gcloud 命令行 或通过 访问 API 以编程方式访问 BigQuery。任何一条语句都取决于选择要恢复到的快照的正确时间戳。

1. Gcloud 命令

此处,命令 "bq cp""bq copy"。"No-clobber"是一个参数,如果目标表尚不存在,它将指示命令失败。

bq cp \
– restore \ 
– no-clobber \
–snapshot_project_id.snapshot_dataset_id.snapshot_table_id \ 
–target_project_id.target_dataset_id.target_table_id

2. Python 函数

理想情况下,开发人员会采取预防措施,以避免需要恢复。但是,如果发生最坏的情况,BigQuery 会提供这种故障保护。