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

2023-11-15

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

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

本教程介绍如何使用以下命令显示 PostgreSQL 服务器中的数据库和表psql.

列出数据库#

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

安装 PostgreSQL 软件包后,会创建一个名为“postgres”的管理用户。默认情况下,该用户无需密码即可连接到本地 PostgreSQL 服务器。

要访问psql终端作为用户“postgres”,运行:

sudo -u postgres psql
The 须藤命令允许您以其他用户身份运行命令。

从 psql 终端内执行\l or \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+ 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”的数据库,您可以键入:

\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命令。

如果您有任何疑问,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 psql 列出 PostgreSQL 数据库和表 的相关文章

  • 如果不存在则插入表并在两种情况下返回 id

    我正在尝试编写一个复杂的查询POSTGRES 这个问题是那个问题的子查询 这是我的表 id 是主键并且自动递增 id appid name 1 2 abc 2 2 cde 在此表中 我想获取名称为 xyz 且 appid 2 的 id 如果
  • Ruby PostgreSQL 教程 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试编写一个与 PostgreSQL 数据库交互的 ruby 脚本 我试图从文档中拼凑出如何做到
  • 包含相关模型时 Sequelize 急切加载错误

    我正在使用 Sequelize 来发出此请求 return Expense findAll include model ExpenseCategory then expenses gt res status 200 send expense
  • Postgresql 在 where 子句中转义单引号 [重复]

    这个问题在这里已经有答案了 所以我尝试运行这样的脚本 select id from owner where owner name john s 我收到此错误 ERROR column john s does not exist 我也尝试过这
  • PostgreSQL 错误:EXECUTE 的查询字符串参数为空

    我有一个名为证据的表 其中有一个触发器调用一个存储过程 该过程基本上按月进行表分区 但是 当我开始在负载下插入大 量行时 出现了一个模糊的错误 Npgsql NpgsqlException query string argument of
  • TypeORM 插入带有外键的行

    我之间有 OneToMany 关系聊天室1 M gt 留言我遇到的问题是 每当我尝试插入一条消息 或大量消息 时 ChatRoom 的外键为空 此外 我正在上传我的设置 Entity messages export class Messag
  • 每周汇总最近加入的记录

    我有一个updatesPostgres 中的表是 9 4 5 如下所示 goal id created at status 1 2016 01 01 green 1 2016 01 02 red 2 2016 01 02 amber And
  • postgresql 数据库在 OS X 上的位置?

    我确信这个问题已经得到解答 但我似乎找不到答案 我使用 Homebrew brew install postgresql 安装了 postgresql 它安装到 usr local Cellar postgresql 后记按照我这样做的说明
  • Laravel 5.3 Schema::create ENUM 字段是 VARCHAR

    我刚刚创建了新的迁移 运行后我看到了我的领域type 不是 ENUM 类型 它有一个改为 VARCHAR 255 类型 Schema create payments function Blueprint table table gt inc
  • 在 Mac 中运行 Postgresql:数据库“postgres”不存在 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我按照这些说明让 postgresql 在 mac 上运行 请注意 我使用 Homebrew 进行安装 并且当前可通过brew安装的版本是 9 2 1
  • 从 INSERT 返回带有 ON CONFLICT 的行,无需更新

    我遇到的情况是 我经常需要从具有唯一约束的表中获取一行 如果不存在则创建它并返回 例如我的表可能是 CREATE TABLE names id SERIAL PRIMARY KEY name TEXT CONSTRAINT names na
  • 如果未找到值,则使用默认值填充行 PostgresQL

    我想返回过去 7 天的 user activity 但对于那些空的日子我想添加 0 作为值 假设我有这张桌子 actions id date 67 123 2019 07 7 90 123 2019 07 9 100 123 2019 07
  • Postgres 简单的“数据透视表”

    如果我有一个这样的数据表 name type count test blue 6 test2 red 3 test red 4 我怎样才能查询它以获得一个表 name num red num blue test 4 6 test2 3 0
  • PostgreSQL C 函数建议

    有人可以给我一个关于自定义函数的初步尝试的提示吗 我需要用 2 个参数构造查询 一个 varchar 和一个 unix 时间戳 一个整数 我花了 3 个小时才得到下面的几行结果 查询测试可以是 select from pdc posot c
  • 检查 SELECT 子句中的另一个表中是否存在某个值

    我想查询 table1 中的名称 并查找 table2 中是否存在名称 我有以下查询 但它似乎不起作用 有什么建议我做错了什么吗 select A name CASE WHEN A name in select B name in tabl
  • PostgreSQL 性能 - SELECT 与存储函数

    我正在尝试在 PostgreSQL 上创建一个存储函数来提高性能并存储大查询 并且只需在我的代码中调用该函数即可 例如 如果我有一个函数 CREATE OR REPLACE FUNCTION test max integer RETURNS
  • 如何在 PostgreSQL 中将数据库从一台服务器移动到另一台服务器?

    我正在尝试将数据库从旧服务器移动到新服务器 任何帮助 将不胜感激 Just pipe http www postgresql org docs current interactive migration html从旧服务器转储到新服务器 p
  • 是否有可能在 postgres 中捕获外键违规

    我正在尝试将数据插入具有外键约束的表中 如果我插入的行中存在约束违规 我想丢弃该数据 问题是每次我违反约束时 postgres 都会返回一个错误 我是否可以在插入语句中添加一些语句 例如 ON FOREIGN KEY CONSTRAINT
  • 使用两个日期之间的随机日期时间更新每一行

    我有一个专栏叫date created我希望每一行保存一个随机日期 日期距当前时间为 2 天 我正在运行以下查询 但它会更新具有相同随机日期的所有行 我希望每一行都是随机的并且不相同 update table set date create
  • 查找 PostgreSQL 中所有范围集合的所有交集

    我正在寻找一种有效的方法来查找时间戳范围集之间的所有交集 它需要与 PostgreSQL 9 2 配合使用 假设这些范围代表一个人可以见面的时间 每个人都可以有一个或多个空闲时间范围 我想找到all可以召开会议的时间段 即所有人都有空的时间

随机推荐

  • 在 Bash 中使用模运算符 (%)

    在编程中 模数或余数是返回除法余数的运算 在 Bash 中 模运算符由 符号表示 模运算符通常在编程中用于检查一个数字是否可以被另一个数字整除或执行需要循环模式的运算 在本文中 我们将探讨如何在 Bash 中使用模运算符 Syntax Ba
  • 什么是 MAC 地址?

    了解 MAC 地址的功能和重要性对于任何处理计算机网络 无论是家庭网络还是复杂的企业设置 的人来说都是至关重要的 本文提供了全面的指南媒体访问控制 MAC 地址 它们在网络通信中的作用以及它们在当今数字世界中的重要性 什么是 MAC 地址
  • 使用 cURL 发送电子邮件的分步指南

    cURL 短缺 URL 客户端 是一个开源软件项目 它提供了一个库 libcurl 和一个命令行工具 curl 用于使用各种网络协议传输数据 虽然它通常用于与 HTTP 和 HTTPS 交互 但它也可以处理 SMTP 这是在互联网上发送电子
  • 如何在 Ubuntu 和 Debian 上安装和使用 Imapsync

    Imapsync是一种 IMAP 传输工具 用于将电子邮件从一个 IMAP 服务器复制到另一个 IMAP 服务器 本文将帮助您在 Ubuntu Debian 和 Linuxmint 系统上安装 imapsync 并在两个 IMAP 服务器之
  • Linux 中不存在目录时如何创建

    Linux 是全球数百万用户使用的流行操作系统 使用 Linux 时的一项常见任务是创建和管理目录 在本文中 我们将介绍如何在 Linux 中创建目录 仅当目录尚不存在时 这在编写脚本或执行需要创建多个具有唯一名称的目录的任务时非常有用 使
  • 解决 Flask 中的“AssertionError:视图函数映射正在覆盖现有端点函数”错误

    Flask 是一种广泛使用的用 Python 编写的微型 Web 框架 它因其简单性和为开发人员提供的控制而广受欢迎 但是 与任何其他框架一样 开发人员在使用 Flask 时可能会遇到错误 其中一个错误是 断言错误 视图函数映射正在覆盖现有
  • 如何在 Linux 中打开端口

    在 Linux 操作系统中 端口是用于通过网络发送或接收数据的通信端点 网络端口由数字标识 每个端口号与特定类型的网络服务相关联 例如 端口 80 用于 HTTP 流量 端口 21 用于 FTP 端口 25 用于电子邮件 为了建立网络连接
  • 在 Bash 中使用管道 (|) 运算符

    Bash 脚本是管理和在类 Unix 系统上工作的一个组成部分 管道运算符 是 Bash 脚本工具包中一个非常强大的工具 尽管外观简单 但它是高效命令行操作 简化流程和实现复杂数据操作的基石 本文深入探讨了管道运算符的使用 探讨它是什么 它
  • 如何在 Bash 脚本中获取当前日期和时间

    作为一种脚本语言 Bash 广泛用于系统管理任务和自动化 Bash 脚本中的一项常见任务是获取当前日期和时间 这 date 命令以特定格式返回当前日期和时间 但您也可以使用自定义格式字符串来获取任何格式的日期和时间 在本文中 我们将探讨如何
  • Linux 中的 Uname 命令

    在本文中 我们将介绍uname命令 uname是一个命令行实用程序 可打印有关操作系统名称和系统硬件的基本信息 uname命令 The uname工具最常用于确定处理器架构 系统主机名和内核版本系统上运行 的语法uname命令采用以下形式
  • Linux中的Find命令(查找文件和目录)

    The find命令是 Linux 系统管理员工具库中最强大的工具之一 它根据用户给定的表达式在目录层次结构中搜索文件和目录 并可以对每个匹配的文件执行用户指定的操作 您可以使用find命令根据文件和目录的权限 类型 日期 所有权 大小等搜
  • 如何在 CentOS 7 上安装 Apache Cassandra

    Apache Cassandra 是一款开源 NoSQL 数据库 无单点故障 提供线性可扩展性和高可用性 且不会影响性能 在 Cassandra 中 记录的结构与关系数据库中的表 行和列类似 Apache Cassandra 被许多组织使用
  • 猛击直到循环

    循环是编程语言的基本概念之一 当您想要一遍又一遍地运行一系列命令直到满足特定条件时 循环会很方便 在 Bash 等脚本语言中 循环对于自动执行重复任务非常有用 Bash 脚本中有 3 种基本循环结构 for loop while 循环 an
  • 如何在树莓派上安装 Ubuntu

    Raspberry Pi 是有史以来最受欢迎的单板计算机 它可用于多种用途 如台式电脑 家庭媒体中心 智能 Wi Fi 路由器 自动化系统和游戏服务器 用例是无穷无尽的 如果您的 Raspberry Pi 没有预装 NOOBS 的 SD 卡
  • 如何在 Debian 9 上安装 Python 3.7

    Python 是世界上最流行的编程语言之一 Python 以其简单易学的语法成为初学者和经验丰富的开发人员的绝佳选择 Python 是一种非常通用的编程语言 您几乎可以用它来做任何您想做的事情 编写小脚本 构建游戏 开发网站 创建机器学习算
  • 如何在 Ubuntu Linux 上挂载 exFAT 驱动器

    exFAT 扩展文件分配表 是 Microsoft 专有的文件系统 针对 SD 卡和 USB 闪存驱动器等闪存设备进行了优化 它旨在取代旧的 32 位 FAT32 文件系统 该系统无法存储大于 4 GB 的文件 所有最新版本的 Window
  • 如何在 Ubuntu 18.04 上安装 Slack

    Slack是世界上最受欢迎的协作平台之一 它将您的所有通信汇集在一起 Slack 中的对话按频道组织 您可以为您的团队 项目 主题或任何其他目的创建频道 以保持信息和对话井井有条 您可以搜索频道或消息中发布的所有内容 Slack 还允许您通
  • 如何在 Debian 9 上安装 Skype

    Skype是世界上最受欢迎的通信应用程序之一 可让您免费进行在线音频和视频通话 并以经济实惠的价格拨打全球手机和固定电话 Skype 不是开源应用程序 也不包含在 Debian 存储库中 在本教程中 我们将解释如何在 Debian 9 上安
  • Bash 序列表达式(范围)

    在本文中 我们将介绍 Bash 中序列表达式的基础知识 Bash 序列表达式通过定义范围的起点和终点来生成整数或字符范围 一般与以下组合使用for loops Bash 序列表达式 序列表达式采用以下形式 START END INCREME
  • 如何使用 psql 列出 PostgreSQL 数据库和表

    给药时PostgreSQL在数据库服务器中 您可能执行的最常见任务之一是列出数据库及其表 PostgreSQL 附带了一个交互式工具 称为psql 它允许您连接到服务器并对其运行查询 使用时psql您还可以利用它的元命令 这些命令对于脚本编