如何恢复BigQuery已删除外部表及查看其创建删除日志
解决BigQuery外部表删除后的日志查看与恢复问题
为什么INFORMATION_SCHEMA.TABLE_STORAGE_TIMELINE找不到外部表记录
TABLE_STORAGE_TIMELINE仅追踪占用BigQuery托管存储的内部表,外部表本质是指向外部数据源(如Google Sheets)的元数据,不占用BigQuery存储,因此不会出现在该视图中。
查看外部表的创建/删除日志
唯一可靠的方式是通过**Cloud Logging(审计日志)**查询,步骤如下:
- 打开Google Cloud控制台的「Logging > Logs Explorer」
- 输入以下日志过滤语句(替换括号内的参数):
resource.type="bigquery_table" (protoPayload.methodName="google.cloud.bigquery.v2.TableService.DeleteTable" OR protoPayload.methodName="google.cloud.bigquery.v2.TableService.CreateTable") protoPayload.resourceName:"projects/[你的项目ID]/datasets/[目标数据集ID]/tables/[表名关键词]" - 执行查询后,你可以找到:
- 删除操作的时间、执行者信息
- 创建操作记录中包含的原Google Sheet链接(在
protoPayload.serviceData.createTableRequest.table.externalDataConfiguration.sourceUris字段)
恢复删除的外部表
外部表本身不存储数据(数据在Google Sheets中),只需重新创建指向原Sheet的外部表即可,步骤:
- 获取原Sheet链接:如果忘记链接,从上述审计日志的创建记录中提取
sourceUris字段值 - 确认权限:确保BigQuery服务账号(格式:
service-[项目编号]@gcp-sa-bigquery.iam.gserviceaccount.com)拥有该Google Sheet的访问权限(至少「查看者」权限) - 重新创建外部表:
- 进入目标BigQuery数据集,点击「创建表」
- 「来源」选择「Google Sheets」,粘贴Sheet链接,按需配置表头、数据范围(如
Sheet1!A1:Z) - 「模式」可选择「自动检测」(从Sheet读取字段类型),或手动输入原表的字段结构
- 输入原表名称,点击「创建」
内容的提问来源于stack exchange,提问作者장우현
相关产品推荐
相关产品推荐

