如何从.duckdb文件中获取表的存储大小(MB/GB)?
获取DuckDB表存储大小的可行方法
要查看DuckDB中单个表的存储大小,直接利用内置系统表或PRAGMA命令即可,不用依赖SHOW ALL TABLES或DESCRIBE。以下是两种实用方案:
方案1:查询duckdb_tables系统表
duckdb_tables包含所有表的元数据,其中storage_size字段记录了表的字节级存储大小,可通过SQL换算成MB/GB:
SELECT table_name, ROUND(storage_size / 1024.0 / 1024, 2) AS size_mb, ROUND(storage_size / 1024.0 / 1024 / 1024, 2) AS size_gb FROM duckdb_tables WHERE table_name = '目标表名'; -- 替换成你要查询的表名
方案2:使用PRAGMA命令筛选目标表
执行PRAGMA show_tables可以列出所有表的详细信息,其中包含存储大小字段。若要直接定位目标表,可添加过滤条件:
PRAGMA show_tables WHERE name = '目标表名';
输出结果中的storage_size为字节数,自行除以1024^2(MB)或1024^3(GB)即可得到对应单位的大小。
注意事项
- 若使用的DuckDB版本较旧,
duckdb_tables可能未提供,此时可尝试查询information_schema.tables,但部分旧版本的该表可能没有storage_size字段,建议升级至最新版获得更完整的元数据支持。 - 计算出的存储大小包含表的所有数据、索引及相关辅助文件的磁盘占用量。
内容的提问来源于stack exchange,提问作者Debottam
相关产品推荐
相关产品推荐

