如何使用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