You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BigQuery中获取所有表的表名及行数?

获取BigQuery表名及行数的方法

BigQuery的INFORMATION_SCHEMA确实没有直接的row_count字段,但可以通过以下几种方式获取表名和对应的行数:

方法1:使用项目级INFORMATION_SCHEMA.TABLE_STORAGE视图(推荐)

这个视图提供了项目内所有表的存储元数据,包含总行数字段,无需遍历每个数据集:

SELECT
  table_catalog AS project_id,
  table_schema AS dataset_id,
  table_name,
  total_rows AS row_count
FROM `[你的项目ID].INFORMATION_SCHEMA.TABLE_STORAGE`
WHERE table_type = 'BASE TABLE' -- 可选,过滤掉视图
ORDER BY row_count DESC;

注意:total_rows包含表中所有行(包括时间旅行保留的已删除行),如果只需要当前活跃状态的行数,可使用方法2。

方法2:使用数据集级__TABLES__系统表

每个数据集都自带__TABLES__系统表,存储该数据集下所有表的实时元数据,其中row_count为当前活跃行数:

查询单个数据集

SELECT
  table_id AS table_name,
  row_count
FROM `[你的项目ID].[数据集ID].__TABLES__`
ORDER BY row_count DESC;

查询多个数据集

如果需要跨多个数据集查询,可通过UNION ALL合并各数据集的结果:

SELECT 'dataset_a' AS dataset_id, table_id AS table_name, row_count FROM `proj.dataset_a.__TABLES__`
UNION ALL
SELECT 'dataset_b' AS dataset_id, table_id AS table_name, row_count FROM `proj.dataset_b.__TABLES__`
ORDER BY row_count DESC;

方法3:使用bq命令行工具

如果习惯用命令行操作,可结合bq工具和jq提取表名与行数:

单个数据集查询

bq show --format=prettyjson [项目ID]:[数据集ID] | jq '.tables[] | {table_name: .tableReference.tableId, row_count: .numRows}'

全项目查询

bq ls --format=prettyjson [项目ID]: | jq '.[] | {dataset_id: .id, tables: .tables[] | {table_name: .tableReference.tableId, row_count: .numRows}}'

内容的提问来源于stack exchange,提问作者Consuela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 14:10:18