是否可将BigQuery表恢复到指定时间戳对应的历史状态?
BigQuery恢复到指定时间戳状态的方法
可以将BigQuery表恢复到指定时间戳的较早状态,核心通过FOR SYSTEM_TIME AS OF时间旅行语法结合写入操作实现,具体说明如下:
前提条件
- BigQuery默认提供7天的表时间旅行能力,可自行调整最长至47天,仅时间窗口内的历史状态可被恢复
具体操作方法
1. 验证指定时间点的表数据
你可以先用如下语句查看目标时间点的表内容,确认符合恢复预期:
SELECT * FROM `你的项目ID.你的数据集名.你的表名` FOR SYSTEM_TIME AS OF '目标时间戳';
官方示例:
SELECT * FROM t FOR SYSTEM_TIME AS OF '2017-01-01 10:00:00-07:00';
2. 执行恢复操作
确认数据无误后,可根据需求选择两种恢复方式:
- 恢复为新表:不会影响当前表数据,适合需要比对验证的场景
CREATE TABLE `你的项目ID.你的数据集名.恢复后的新表名` AS SELECT * FROM `你的项目ID.你的数据集名.你的表名` FOR SYSTEM_TIME AS OF '目标时间戳';
- 直接覆盖原表:确认不需要当前表数据时使用,操作不可逆
CREATE OR REPLACE TABLE `你的项目ID.你的数据集名.你的表名` AS SELECT * FROM `你的项目ID.你的数据集名.你的表名` FOR SYSTEM_TIME AS OF '目标时间戳';
注意事项
- 操作覆盖原表前建议先将当前表状态备份为临时表,避免误操作丢失数据
- 如果仅需要恢复部分数据,可以调整SELECT语句筛选对应内容后再写入目标表
- 超出时间旅行窗口的历史数据无法通过该方法恢复
内容的提问来源于stack exchange,提问作者Steve Yeom
相关产品推荐
相关产品推荐

