我怎样才能得到我的 PostgreSQL 服务器上每个数据库的大小

How can i get the size of every db on my PostgreSQL server

我需要在我的 C# 控制台应用程序中获取每个 table 和我的 PostgreSQL 服务器上每个数据库的大小。 我正在使用 npgsql 进行服务器连接,并且我找到了 table 部分

的脚本
SELECT table_schema AS \"Database\", 
       SUM(data_length + index_length) / 1024 / 1024 AS \"Size(MB)\" 
FROM information_schema.TABLES 
GROUP BY table_schema

但我仍然无法切换数据库。如何在不知道名称的情况下连接到服务器上的不同数据库。

利用系统信息功能:

https://www.postgresql.org/docs/current/functions-admin.html

对于数据库大小:

select datname, pg_size_pretty(pg_database_size(datname)) from pg_database ;
        datname         | pg_size_pretty 
------------------------+----------------
 my_test_db             | 7865 kB
 production             | 64 MB
 no_public_sch_template | 7857 kB
 test                   | 11 MB
 test_gz                | 9681 kB
 sch_test               | 7857 kB
 template0              | 7713 kB
 task_manager           | 9681 kB
 template1              | 7865 kB
 aquaculture            | 15 MB
 track_stocks           | 9425 kB
 track_stocks_test      | 9529 kB
 postgres               | 8273 kB

您可以从 pg_database 获取数据库名称 (datname),用于构建脚本以对表进行迭代。