2016-04-05 130 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;