PostgreSQL 有一个单独的命令行工具psql,该工具已经使用了几十年,并且包含在任何 PostgreSQL 安装中。许多 PostgreSQL 的长期用户、开发人员和管理员都依赖它来帮助他们快速连接到数据库、检查模式和执行 SQL 查询。
了解如何安装和使用基本psql命令是任何连接到 PostgreSQL 的人都必须具备的基本技能。
psql简史
要理解为什么 PostgreSQL 有自己的命令行实用程序以及为什么它集成到开发人员使用 PostgreSQL 的方式中,我们需要快速进入时间旅行机器并提醒自己 PostgreSQL 是如何演进的。
1970 -1985 INGRES 是 PostgreSQL 的祖父,它开发并使用了一种名为 QUEL 的专有查询语言。用于与 INGRESS 交互的终端程序之一,被称为监视器(monitor)
1985 -1994 启动并开发了 POSTGRES(在 INGRES 之后)。它维护了现在称为 POSTQUEL 的 QUEL 查询语言,因此监控 应用程序可以继续与 POSTGRES 一起使用
1995 Postgres95 以非常自由的 PostgreSQL 许可证发布,基于 POSTGRES 源代码,但 QUEL 被 SQL 取代!监控终端应用程序将不再工作,并作为与 Postgres95 交互的psql新终端工具提供
1996年至今 PostgreSQL 6.0 在新的 PostgreSQL 全球开发组的指导下发布,此后惊人的工作从未停止。随着 PostgreSQL 的每个版本,对该实用程序进行了附加功能和改进,psql以便为最终用户提供更多功能。
为什么要使用 psql
如果您是 PostgreSQL 领域的新手,使用命令行实用程序连接和查询数据库可能会感觉过时。作为一名长期的 SQL Server 开发人员,我知道缺乏一致的、标准化的 GUI 工具有时会让人感到非常沮丧。
然而,过了一会儿,我意识到当我只需要连接、查看模式和运行简单查询时,psql跳入数据库通常要容易得多。使用元命令成为获取数据库对象详细信息的第二天性。这就像拥有一个具有数百个高效快捷方式的工具来快速处理数据库。
更强大的是,您可以配置psql将返回结果通过不同的格式呈现,这可以成为了解 PostgreSQL 底层目录表的途径。
最后,同样重要的是,很多向您展示如何使用 PostgreSQL 功能的文章、教程、书籍和视频通常会演示使用 psql。了解如何连接该工具并运行基本的元命令将帮助您快速跟进。
长话短说;psql是您的 PostgreSQL 工具包中的一个强大工具。知道如何连接到数据库和运行基本命令将很快为您的 PostgreSQL 工作带来好处。总的来说,我认为学习一些基础知识是值得投入时间的。
安装 psql
命令行 (CLI)工具 psql 在 Linux、MacOS 和 Windows 上可用。它预先捆绑在 PostgreSQL 服务器安装包中,也可以作为独立的 CLI 应用程序进行安装。
此外,psql与 PostgreSQL 一起进行版本控制,因为它在您使用元命令运行的查询需要使用较新的目录模式。为了使 psql 在受支持的 PostgreSQL 版本中向后兼容,我们付出了很多努力,因此较新的版本psql应该至少适用于最近的五个主要版本。
检查 psql
因为 psql 与 PostgreSQL 服务器捆绑在一起,所以如果您曾经安装过PostgreSQL,则您的计算机上可能已经可以使用它。在终端或 Windows 命令提示符下键入以下内容:
1 $> psql --version2
2 psql (PostgreSQL) 15.0 (Ubuntu 15.0-1.pgdg20.04+1)
如果您看到列出psql版本信息,那么说明您已经安装了psql。如果版本较旧,请考虑更新它。
一个好的经验是尝试拥有一个与PostgreSQL 相匹配的psql版本。对于我们在下面介绍的基本命令,您拥有的任何版本很可能都可以使用,但保持psql更新是一个值得遵循的好习惯。
在 Linux 上安装
所有主要的 Linux 发行版都应该有postgresql-client., 这可用于仅安装服务器以外的 PostgreSQL 工具,包括psql、pg_dump、 pg_restore等工具。
我们将使用 Ubuntu 作为示例,但是您的发行版的包管理器应该具有相同(或非常相似)的包名称来执行相同的操作。下面的命令将安装最新版本的工具。
在终端提示符下,运行以下命令:
1 $> sudo apt-get update
2 $> sudo apt-get install postgresql-client
完成后,psql如前所示通过检查版本来验证安装。
在 Windows 上安装
在 Windows 上,您有两个选择。
1、如果您想通过 Windows 命令提示符使用psql,则需要使用postgresql.org 上的 Windows 安装包安装 PostgreSQL 和所有工具。通过安装过程,您可以决定安装服务器和工具的哪些部分。
2、在 Windows 10 或更高版本上,可以在 Windows 子系统 Linux 2 (WSL2) 环境中安装这些工具,并使用正常的 Linux 包管理来安装组件,如上所示。同样,根据您为 WSL 主机使用的发行版,包命令可能会略有不同。
在 MacOS 上安装
有多种方法可以在 MacOS 上安装 PostgreSQL,其中许多包括完整的服务器和相关工具。
在 MacOS 上设置 PostgreSQL 的最快方法是使用Postgres.app(https://postgresapp.com/)。这提供了可以随意启动和停止PostgreSQL 服务器的完整安装,其主页上的简单说明向您展示了如何确保 PostgreSQL CLI 工具位于从终端使用的路径中。
或者,您可以使用 Homebrew 安装PostgreSQL。安装libpq包只会安装工具(而不是服务器)。
1 ryan@mba-laptop % brew doctor
2 ryan@mba-laptop % brew update
3 ryan@mba-laptop % brew install libpq
因为这不是完整的 PostgreSQL 服务器,您还需要正确设置路径,以便您可以从终端使用psql。最简单的方法是让 Homebrew 按如下方式更新链接。
1 ryan@mba-laptop % brew link --force libpq
Docker
最后,如果我没有提到 Docker 作为替代方案,那我就是失职了。通过交互式 Docker shell,可以使用任何官方 PostgreSQL 容器来连接和使用psql. 无论您是尝试连接到 Docker 实例本身上的 PostgreSQL 还是远程连接,psql都可以使用已安装的应用程序(假设网络设置正确)。
例如,以下命令可用于下载和启动 PostgreSQL Docker 容器,连接到正在运行的 shell,并在容器内部使用psql。
1 ryan@redgate-laptop:~$ docker run --name pg15 -p 5432:5432 -e POSTGRES_PASSWORD=password -d postgres
2 ryan@redgate-laptop:~$ docker exec -it pg15 bash
3 root@80049acea1c0:/# psql -h localhost -U postgres
连接到 PostgreSQL
安装后,psql有两种方法可以指定目标数据库的基本连接参数。您将需要以下信息来连接到 PostgreSQL。
1、主机名
2、端口(默认为 5432)
3、用户名
4、密码
5、数据库名称
指定个别参数
有了以上信息,使用这些参数连接到数据库。如果 PostgreSQL 服务器在默认端口 5432 上运行,您可以省略-p开关,psql将自动尝试连接到该端口。
psql -h [hostname] -p [port] -U [username] -d [database name]
如果所有信息都正确,系统将提示您输入密码。使用单独的参数连接到PostgreSQL时,无法在命令行上提供密码。您将始终收到提示,或者您可以在文件中.pgpass指定它。
使用 PostgreSQL 连接 URI
或者,您可以使用连接参数创建 PostgreSQL 连接 URI 以连接到数据库。
1 psql postgresql://[username]:[password]@[hostname]:[port]/[database name]
使用这种形式,您可以在连接字符串中指定密码,只要它不包含分号 ; 或 @ 符
号,因为它们会干扰连接 URI 解析。如果省略密码,PostgreSQL 会提示您。
结论
命令行psql是任何使用 PostgreSQL 的人的首选工具。凭借数十年的发展和数百个内置的元命令来帮助开发人员和管理员快速高效地使用 PostgreSQL,知道如何安装和使用它来连接数据库是 PostgreSQL 用户的一项基本技能。作为一个额外的好处,由于社区为保持向后兼容性所做的不懈努力,最新psql版本至少可以与 PostgreSQL 的最近五个主要版本一起使用。
当然,了解如何安装和连接只是难题的一部分。在我们的下一篇文章中,我们将向您介绍如何使用psql以及您应该了解的主要元命令来加速 PostgreSQL 数据库的开发和管理。