如何使用psql列出PostgreSQL數據庫和表

在管理PostgreSQL數據庫服務器時,您可能要執行的最常見任務之一就是列出數據庫及其表。

PostgreSQL帶有一個稱為 psql,它使您可以連接到服務器並對其進行查詢。 使用時 psql 您還可以利用其元命令。 這些命令對於腳本和命令行管理很有用。 所有元命令都以無引號的反斜杠開頭,也稱為反斜杠命令。

本教程說明了如何使用以下命令顯示PostgreSQL服務器中的數據庫和表 psql

列出數據庫

您可以使用來連接到PostgreSQL服務器 psql 以任何系統用戶的身份命令。 根據服務器配置,用戶可能需要輸入密碼才能連接到 psql 終奌站。 要訪問 psql 終端作為您當前登錄的用戶,只需鍵入 psql

安裝PostgreSQL軟件包後,將創建一個名為“ postgres”的管理用戶。 默認情況下,該用戶無需密碼即可連接到本地PostgreSQL服務器。

要訪問 psql 以“ postgres”用戶身份運行,運行:

sudo -u postgres psql

sudo 命令允許您以其他用戶身份運行命令。

從psql終端中執行 l 要麼 list 元命令列出所有數據庫:

l

輸出將包括數據庫數量,每個數據庫的名稱,其所有者,編碼和訪問特權:

                              List of databases
   Name    |  Owner   | Encoding | Collate |  Ctype  |   Access privileges   
-----------+----------+----------+---------+---------+-----------------------
 odoo      | odoo     | UTF8     | C       | C.UTF-8 | 
 postgres  | postgres | UTF8     | C.UTF-8 | C.UTF-8 | 
 template0 | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
           |          |          |         |         | postgres=CTc/postgres
 template1 | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
           |          |          |         |         | postgres=CTc/postgres
(4 rows)

PostgreSQL服務器具有默認創建的三個數據庫,即template0,template1和postgres。 前兩個是創建新數據庫時使用的模板。

如果要獲取有關數據庫大小的信息,請使用默認表空間和描述 l+ 要麼 list+。 僅噹噹前用戶可以連接時,才會顯示數據庫大小。

要獲取所有數據庫的列表而不訪問psql shell,請使用 -c 切換如下圖:

sudo -u postgres psql -c "l"

列出數據庫的另一種方法是使用以下SQL語句:

SELECT datname FROM pg_database;

不像 l 上面查詢的meta命令僅顯示數據庫名稱:

  datname  
-----------
 postgres
 odoo
 template1
 template0
(4 rows)

列表表

要首先列出特定數據庫的所有表,您需要使用 c 要麼 connect 元命令。 使用psql終端登錄的用戶必須能夠連接到數據庫。

例如,要連接到名為“ odoo”的數據庫,請輸入:

c odoo

切換數據庫後,請使用 dt 元命令列出所有數據庫表:

輸出將包括表的數量,每個表的名稱及其模式,類型和所有者:

                              List of relations
 Schema |                        Name                         | Type  | Owner 
--------+-----------------------------------------------------+-------+-------
 public | base_import_import                                  | table | odoo
 public | base_import_mapping                                 | table | odoo
 public | base_import_tests_models_char                       | table | odoo
 ...
 public | web_editor_converter_test_sub                       | table | odoo
 public | web_tour_tour                                       | table | odoo
 public | wizard_ir_model_menu_create                         | table | odoo
(107 rows)

如果數據庫為空,則輸出將如下所示:

No relations found.

要獲取有關表大小和描述的信息,請使用 dt+

結論#

您已經了解了如何使用列出PostgreSQL數據庫和表 psql 命令。

如有任何疑問,請隨時發表評論。

PostgreSQL

Sidebar