BigQuery - 删除和恢复表



在 BigQuery 中删除表

删除表提供了相同的两个选项:UI 和**SQL 语法**。要在 UI 中删除表,只需选择要删除的表并选择“删除表”。由于这是一个永久性操作,您将在删除之前被提示输入表名。

**注意** - 您也可以在 SQL 环境中 DROP 表。

Deleting a Table in BigQuery

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

要**在不带参数的情况下删除任何内容**,可以使用以下查询 -

DELETE FROM project.dataset.table
WHERE 1=1

**注意** - 请谨慎使用此查询。

在 BigQuery 中恢复表

尽管有删除的两个步骤,但仍然很容易意外地 DROP 或删除表。因此,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 提供了此故障安全机制。

广告