给药时PostgreSQL在数据库服务器中,您可能执行的最常见任务之一是列出数据库及其表。
PostgreSQL 附带了一个交互式工具,称为psql
,它允许您连接到服务器并对其运行查询。使用时psql
您还可以利用它的元命令。这些命令对于脚本编写和命令行管理非常有用。所有元命令都以不带引号的反斜杠开头,也称为反斜杠命令。
本教程介绍如何使用以下命令显示 PostgreSQL 服务器中的数据库和表psql
.
列出数据库#
您可以使用以下命令连接到 PostgreSQL 服务器psql
以任何系统用户身份执行命令。根据服务器配置,用户可能需要输入密码才能连接到psql
终端。要访问psql
终端作为您当前登录的用户,只需键入psql
.
安装 PostgreSQL 软件包后,会创建一个名为“postgres”的管理用户。默认情况下,该用户无需密码即可连接到本地 PostgreSQL 服务器。
要访问psql
终端作为用户“postgres”,运行:
sudo -u postgres psql
从 psql 终端内执行\l
or \list
列出所有数据库的元命令:
输出将包括数据库的数量、每个数据库的名称、其所有者、编码和访问权限:
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+
or \list+
。仅当当前用户可以连接到数据库时才会显示数据库大小。
要在不访问 psql shell 的情况下获取所有数据库的列表,请使用-c
切换如下图:
sudo -u postgres psql -c "\l"
列出数据库的另一种方法是使用以下 SQL 语句:
SELECT datname FROM pg_database;
不像\l
上面的元命令查询将仅显示数据库的名称:
datname
-----------
postgres
odoo
template1
template0
(4 rows)
列表表#
要首先列出特定数据库的所有表,您需要使用以下命令连接到该数据库:\c
or \connect
元命令。您登录到 psql 终端的用户必须能够连接到数据库。
例如,要连接到名为“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
命令。
如果您有任何疑问,请随时发表评论。