误删Google BigQuery上传数据集中表的重要行后如何恢复该表?
BigQuery 误删表数据恢复方案
适用前提
删除操作发生在BigQuery默认的7天时间旅行窗口内(部分自定义配置的实例最多支持14天窗口),超出窗口则无法使用下述内置功能恢复。
恢复步骤
方法一:通过时间旅行查询直接恢复(最便捷)
- 先确认DELETE操作的大致执行时间,取删除操作前的任意时间点即可,建议精确到分钟。
- 先执行快照查询验证数据是否符合预期:
-- 时间戳替换为你删除操作前的时间点,比如你14:30执行的删除,就填14:29的时间 SELECT * FROM `cars.car_info` FOR SYSTEM_TIME AS OF '202X-XX-XX 14:29:00'; -- 如果记不清精确时间,也可以用时间偏移量,比如删了不到1小时就取1小时前的快照 SELECT * FROM `cars.car_info` FOR SYSTEM_TIME AS OF TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR);
- 确认查询结果包含你误删的
price=0的行之后,直接覆盖原表完成恢复:
CREATE OR REPLACE TABLE `cars.car_info` AS SELECT * FROM `cars.car_info` FOR SYSTEM_TIME_AS_OF '你确认的删除前时间戳';
小提示:担心直接覆盖出问题的话,可以先把快照结果写入临时表
cars.car_info_recovered,核对数据无误后再替换原表。
方法二:通过控制台快照恢复
如果你的表开启了自动快照功能,或者之前手动生成过删除前的快照,可以通过可视化操作恢复:
- 打开BigQuery控制台,进入
cars数据集页面 - 找到
car_info表,切换到「快照」标签 - 选择删除时间之前的快照,点击「恢复」,选择恢复到原表即可
额外说明
- 恢复操作会覆盖当前表的所有数据,操作前建议先备份当前的表数据
- 如果删除操作已经超出时间旅行窗口,可联系组织管理员查询是否有导出到云存储的离线备份可用于恢复
内容的提问来源于stack exchange,提问作者Vicky Josepha
相关产品推荐
相关产品推荐

