2016-04-05 93 views
0

我有这个简单的表,我想用它来存储文件。在PostgreSQL中计算文件大小

CREATE TABLE table(
ID INTEGER NOT NULL, 
FILE_NAME TEXT, 
FILE OID 
) 
; 

有什么办法用SQL查询来计算表中的文件总大小?这可能没有功能?

+0

的可能的复制(http://stackoverflow.com/questions/10169309/get-size-of-large -object-in-postgresql-query) –

+0

在我的情况下,我更喜欢使用查询不是功能?这可能吗? –

回答

1

如果你有兴趣在磁盘总容量(磁盘使用情况),你可以这样做:

SELECT nspname || '.' || relname AS "relation", 
    pg_size_pretty(pg_relation_size(C.oid)) AS "size" 
    FROM pg_class C 
    LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) 
    WHERE nspname NOT IN ('pg_catalog', 'information_schema') 
    ORDER BY pg_relation_size(C.oid) DESC 
    LIMIT 20; 

其他查询来衡量关系的大小,可以发现in the PostgreSQL Wiki

+0

谢谢,但我只需要将文件的大小放入表格中即可。 –

+0

pg_relation_size是否与高球一起工作? –

2

rzo接近但不完全正确。

select file_name, pg_column_size(lo_get(oid)) from files; 

以字节为单位给出您的大小。

如果你想漂亮的印刷:?获取PostgreSQL的查询大对象的大小]

select file_name, pg_size_pretty(pg_column_size(lo_get(oid))::numeric) from files;