阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

如何使用 psql 列出 PostgreSQL 数据库和表

132次阅读
没有评论

共计 1844 个字符,预计需要花费 5 分钟才能阅读完成。

在管理 PostgreSQL 数据库服务器时,您可能要执行的最常见任务之一就是列出数据库及其表。

PostgreSQL 附带了一个名为 psql 的交互式工具,允许您连接到服务器并对其运行查询。在使用 psql 时,还可以利用它的元命令。这些命令对于脚本编写和命令行管理非常有用。所有元命令都以非引号反斜杠开头,也称为反斜杠命令。

本教程解释如何使用 psql 在 PostgreSQL 服务器中显示数据库和表。

列出数据库

您可以使用该 psql 命令以任何系统用户身份连接到 PostgreSQL 服务器。根据服务器配置,用户可能需要输入其密码才能连接到 psql 终端。要以您当前登录的用户身份访问 psql 终端,只需键入即可 psql。

安装 PostgreSQL 软件包后,将创建名为“postgres”的管理用户。默认情况下,此用户可以在没有密码的情况下连接到本地 PostgreSQL 服务器。

要以“postgres”用户身份访问终端 psql,请运行:

sudo -u postgres psql

该 sudo 命令允许您以其他用户身份运行命令。

从 psql 终端执行 \l\list meta-command 列出所有数据库:

\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 元命令不同,上面的查询将仅显示数据库的名称:

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

列出表

要首先列出特定数据库的所有表,您需要使用 \c 或者 \connect meta-command 连接到它。您登录 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+。

结论

您已经学习了如何使用该 psql 命令列出 PostgreSQL 数据库和表。

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1844字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中