如何为公共查询创建别名以在任何数据库上运行?

问题描述 投票:0回答:1

我经常发现自己想要在多个不同的数据库上运行这样的查询:

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
进入任何数据库并轻松运行它?

postgresql psql
1个回答
0
投票

我发现我可以在我的

~/.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         │
© www.soinside.com 2019 - 2024. All rights reserved.