BigQuery - 删除和恢复表
在 BigQuery 中删除表
删除表提供相同的两个选项:UI 和 SQL 语法。要在 UI 中删除表,只需选择要删除的表并选择"删除表"。由于这是一项永久性操作,因此系统会提示您在删除之前输入表名称。
注意 −您还可以在 SQL 环境中删除表。
要仅删除表的内容并保留其中的数据,您可以使用需要 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 会提供这种故障保护。