我经常发现自己想要在多个不同的数据库上运行这样的查询:
select n, pg_size_pretty(s) from (
select n, pg_total_relation_size(n) s from (
select format('%I.%I', table_schema, table_name) n from information_schema.tables
)
)
order by s desc;
如何为此查询创建别名,以便我可以
psql
进入任何数据库并轻松运行它?
我发现我可以在我的
~/.psqlrc
中添加别名:
\set tablesizes 'select n, pg_size_pretty(s) from ( select n, pg_total_relation_size(n) s from ( select format(''%I.%I'', table_schema, table_name) n from information_schema.tables)) order by s desc;'
然后我可以这样使用它:
$ psql $DB_URL
postgres=# :tablesizes
┌───────────────────────────────────────────────────────────────────────┬────────────────┐
│ n │ pg_size_pretty │
├───────────────────────────────────────────────────────────────────────┼────────────────┤
│ pg_catalog.pg_proc │ 1448 kB │
│ pg_catalog.pg_attribute │ 848 kB │
│ pg_catalog.pg_rewrite │ 824 kB │
│ pg_catalog.pg_description │ 616 kB │
│ pg_catalog.pg_depend │ 448 kB │
│ pg_catalog.pg_statistic │ 336 kB │