如何找到以 GB 为单位的列的大小?
How do I find the size of a column in GB?
我的数据库中存储了两个带有附件的表。来自多个建筑物的人使用我的应用程序将附件上传到数据库(文件本身存储在 bytea 类型中)。我需要计算出每个建筑物的附件总大小(以 GB 为单位)。
SELECT sum(octet_length(attachmentfile))
FROM schema.tattachments a, schema.trequests r, schema.tlocations l
WHERE r.location = l.locationid
AND a.reqid = r.reqid
AND r.sys_actntm > '2014-09-18'
GROUP BY l.building
上面的SQL returns一个bigint结果用building隔开:
sum bigint
--|-----------
1 | 15782159611407981
2 | 1140653769
3 | 710849157667
等...
如何设置此 SQL 语句的格式,以便它以 GB 或 MB 为单位提供信息,而不是这些大数字?
PostgreSQL 有一些 system administration functions 可以为您解决这个问题。按照这些思路应该可以工作。
SELECT pg_size_pretty(sum(octet_length(attachmentfile)::bigint))
FROM schema.tattachments a, schema.trequests r, schema.tlocations l
WHERE r.location = l.locationid
AND a.reqid = r.reqid
AND r.sys_actntm > '2014-09-18'
GROUP BY l.building;
您最好将 octet_length() 替换为 pg_column_size()。不确定这将如何影响您的查询。
我的数据库中存储了两个带有附件的表。来自多个建筑物的人使用我的应用程序将附件上传到数据库(文件本身存储在 bytea 类型中)。我需要计算出每个建筑物的附件总大小(以 GB 为单位)。
SELECT sum(octet_length(attachmentfile))
FROM schema.tattachments a, schema.trequests r, schema.tlocations l
WHERE r.location = l.locationid
AND a.reqid = r.reqid
AND r.sys_actntm > '2014-09-18'
GROUP BY l.building
上面的SQL returns一个bigint结果用building隔开:
sum bigint
--|-----------
1 | 15782159611407981
2 | 1140653769
3 | 710849157667
等...
如何设置此 SQL 语句的格式,以便它以 GB 或 MB 为单位提供信息,而不是这些大数字?
PostgreSQL 有一些 system administration functions 可以为您解决这个问题。按照这些思路应该可以工作。
SELECT pg_size_pretty(sum(octet_length(attachmentfile)::bigint))
FROM schema.tattachments a, schema.trequests r, schema.tlocations l
WHERE r.location = l.locationid
AND a.reqid = r.reqid
AND r.sys_actntm > '2014-09-18'
GROUP BY l.building;
您最好将 octet_length() 替换为 pg_column_size()。不确定这将如何影响您的查询。