QA与Prod环境表行列数不一致,如何用SQL Server查询全表行列数?
SQL Server 查询所有表的行数与列数
以下是SQL Server中查询当前数据库所有用户表的行数和列数的SQL语句,效果和你用Python统计Parquet文件行列数的逻辑一致:
SELECT SCHEMA_NAME(t.schema_id) AS schema_name, t.name AS table_name, SUM(p.rows) AS count_of_rows, COUNT(c.column_id) AS count_of_col FROM sys.tables t JOIN sys.indexes i ON t.object_id = i.object_id JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id LEFT JOIN sys.columns c ON t.object_id = c.object_id WHERE i.index_id IN (0, 1) -- 仅统计聚集索引或堆表的总行数 AND t.type = 'U' -- 只包含用户创建的业务表,排除系统表 GROUP BY SCHEMA_NAME(t.schema_id), t.name ORDER BY count_of_rows DESC;
语句说明:
schema_name:表所属的架构名称(如默认的dbo),不需要可直接删除该列table_name:对应你Python代码里的path,代表统计对象的名称count_of_rows:通过系统分区统计获取行数,比直接执行COUNT(*)效率高,适合大表场景count_of_col:统计对应表的总列数
如果需要导出结果为CSV,在SQL Server Management Studio执行完语句后,右键结果集 → 选择「保存结果为」→ 格式选CSV即可,和你Python代码导出文件的效果一致。
要对比QA与生产环境的差异,只需分别在两个环境的数据库连接中执行该语句,再对比两份结果就能快速定位行列数不一致的表。
内容的提问来源于stack exchange,提问作者Anubhav Swaroop
相关产品推荐
相关产品推荐

