http://www.postgresql.org/docs/8.4/static/functions-admin.html说:
pg_relation_size
接受表、索引或 Toast 表的 OID 或名称,并返回大小(以字节为单位)
但是,当我将它与有效的表名一起使用时,我收到错误:
列[表] 不存在...
我知道我的桌子存在,因为这样做
SELECT count(*) FROM [table]
Run Code Online (Sandbox Code Playgroud)
返回一个有效的数字。有任何想法吗?
尽管原因不同,但我遇到了同样的错误。pg_relation_size 不区分大小写,因此如果您有小写以外的任何内容,它将无法开箱即用:
postgres=> SELECT pg_size_pretty(pg_total_relation_size('MyTable'));
ERROR: relation "mytable" does not exist
LINE 1: SELECT pg_size_pretty(pg_total_relation_size('mytable...
^
postgres=> SELECT pg_size_pretty(pg_total_relation_size('"MyTable"'));
pg_size_pretty
----------------
225 MB
(1 row)
Run Code Online (Sandbox Code Playgroud)
因此,为了使其在 SELECT 语句中起作用,您需要将表名括在引号中:
postgres=> SELECT relname, nspname, pg_size_pretty(pg_relation_size('"' || relname || '"'))
FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','') AND n.nspname NOT IN ('pg_catalog', 'pg_toast') AND pg_table_is_visible(c.oid)
ORDER BY c.relpages DESC;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7960 次 |
| 最近记录: |