如何在Windows上仅安装PostgreSQL客户端工具?

111

我在Linux系统上有一个PostgreSQL数据库,想要从我的Windows PC访问它,但我只找到了包括数据库服务器和客户端的完整安装程序的Windows二进制文件。

是否有任何地方可以获取仅包含PostgreSQL客户端的Windows二进制文件安装程序?

(澄清一下,我想要的是标准的PostgreSQL客户端psql,而不是GUI客户端或独立工具。)


为什么不直接使用ssh登录到你的Linux机器上,然后在那里使用psql呢? - mehmet
8
基本上因为我开发的任何脚本都将在我的本地电脑上运行,所以从那里运行更容易。所有我的开发工作都在Windows控制台提示符下进行,所以从那里运行我的SQL也更加方便。 - Paul Moore
5
他正在为一个客户端询问,如果他在询问这个问题,显然他不需要/不想/无法在Linux机器上运行psql。 - VaTo
2020年的现在,@Fact下面的回答应该被接受为正确答案。 - G-Mac
11个回答

73
截至2020年,当您从这里下载完整的安装程序后,单击下一步,再下一步,您会得到仅安装命令行工具的选项。 输入图像描述。记得将bin文件夹的路径添加到PATH变量中。

6
这是我认为最简单但更好的方法。 - ata
2
这应该是截至2022年的被接受的答案。 - Meursault
1
截至2023年,已接受的答案仍然有效。 - undefined

65

很遗憾,没有真正的客户端“only”安装程序。

你可以做的就是下载完整的Postgres二进制文件的ZIP归档:

http://www.enterprisedb.com/products-services-training/pgbindownload

然后从中删除“server”部分。

解压缩后,你会得到以下目录:

bin
doc
include
lib
pgAdmin III
share
StackBuilder
symbols

你可以删除 docincludepgAdmin IIIStackBuildersymbols 目录。据我所知(但我不确定),客户端也不需要 sharelib 目录,但你需要测试一下。因此只剩下 bin 目录。

我认为在 psql 中本地化错误消息可能需要 share 目录,但我不确定。

bin 目录内,你基本上可以删除所有 .exe 文件(当然除了 psql.exe)。你还可以删除所有 wx*.dll 文件,它们仅适用于 pgAdmin。 libxml2.dlllibxslt.dll 也仅适用于服务器。

如果你确实想要其他一些客户端工具,你可能需要保留:

  • pg_dump.exe
  • pg_dumpall.exe
  • pg_restore.exe

这种方法的一个缺点是需要安装Visual C++ Redistributable。但你也可以通过将从已安装它的某台计算机中的 MSVCR120.DLL 放入 bin 目录来克服这个问题。

这样,您就留下了这些文件(来自bin目录),需要用于psql客户端:

  • iconv.dll(在较新的Postgres版本中为libiconv-2.dll)
  • libeay32.dll
  • libintl-8.dll
  • libpq.dll
  • msvcr120.dll
  • ssleay32.dll
  • zlib1.dll
  • psql.exe

当然,您也可以从现有的Postgres安装中获取所有这些内容,无需下载ZIP存档。


显然,这不是一个真正的安装程序,但是如果将清理过的目录放入ZIP文件中,则可以分发该ZIP文件,需要此内容的人只需解压缩存档即可。个人认为,unzip 是最好的“安装程序”(我也使用它来安装Postgres服务器,Windows安装程序有太多怪癖)。


谢谢。我实际上并不太担心剥离掉不必要的服务器部分 - 我想要避免的主要是安装程序创建帐户、服务和数据库 - 所以只有zip分发包就可以了。我首先找到了这个,但只在EnterpriseDB网站上找到了安装程序(postgresql网站只指向http://www.enterprisedb.com/products-services-training/pgdownload,并且没有从那里链接到bin下载页面 :-()。 - Paul Moore
糟糕,刚刚才注意到postgresql.org下载页面上的“高级用户”链接。上次我一定是错过了它。 - Paul Moore
4
对于任何使用 PostgreSQL >= 9.6.3 的人,如果想知道 iconv.dll 去哪里了,请改为使用 libiconv-2.dll。请注意,此举不应更改原意。 - Anthony Neace
可以确认这个方法在2020年仍然有效。对于只需要客户端工具的psql.exe非常有帮助。 - Doug S
@a_horse_with_no_name 我在进行二进制压缩包安装时遇到了这个错误:“initdb.exe初始化数据库群集已停止工作”,您有什么想法吗?非常感谢! - Dragon

36

实际上,pgAdmin中有客户端命令行工具。您只需要从https://www.postgresql.org/download/windows/在Windows机器上安装即可。

然后,您就可以在类似C:\Program Files (x86)\pgAdmin III\1.22C:\Program Files (x86)\pgAdmin 4\v2\runtime的文件夹中找到这些工具,这取决于您所安装的pgAdmin版本。


请注意,您可以从https://www.postgresql.org/ftp/pgadmin/pgadmin4/v7.6/windows/下载pgAdmin。 - undefined

14

感谢所有在该帖子中发帖的人。

值得一提的是,我只使用了来自zip存档文件中以下文件就在Windows 10下使得PostgreSQL 10.10的psql.exe工作:

libcrypto-1_1-x64.dll
libiconv-2.dll
libintl-8.dll
libpq.dll
libssl-1_1-x64.dll
psql.exe

连接到AWS Redshift时,我遇到了以下错误:

psql: 致命错误: 参数“client_encoding”的值无效:“WIN1252”

我通过运行以下内容解决了这个问题:

set PGCLIENTENCODING=UTF8

我在https://forums.aws.amazon.com/thread.jspa?messageID=600088找到了这个解决方案。

希望对你有所帮助。


谢谢。这个列表正是我在寻找的。非常感谢。 - F.D.Castel

13

我知道这是一个比较老的问题,但当我使用最新版本的Postgres(10.4)的Windows安装程序时,它给了我安装仅命令行工具的选项。在安装程序窗口中提示我选择需要安装的内容时,我只需取消勾选serverpgadmin选项即可。


3
请注意,截至今天,我在PostgreSQL网站上看到两个Windows安装程序,只有一个选项可以仅安装命令行工具。EnterpriseDB安装程序有此选项,而BigSQL安装程序没有单独的命令行工具选项。 - SeanN

13
以下是我在Windows上使用Postgres12 psql连接到Amazon Redshift的步骤:
  1. 从以下位置下载Postgres 12.4: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

  2. 运行安装程序,它将花费几分钟时间并提示您选择安装选项

  3. 选择如下屏幕截图所示的命令行工具并安装

  4. 以上操作将在以下文件夹中安装postgres12命令行:C:\Program Files\PostgreSQL\12\bin。确保将其添加到您的PATH环境变量中

  5. 打开cmd并运行以下命令 set PGCLIENTENCODING=UTF8

  6. 运行psql以连接到redshift。请务必更改下面突出显示的参数,以适应您的集群端点、用户ID、复制脚本文件名和日志脚本文件名 psql -h redshift-cluster-1.abcdefgh.us-east-1.redshift.amazonaws.com -U demo_user -d dev -p 5439 -f d:\demo\redshift_script.sql -L d:\demo\log_redshift_script.log

  7. redshift_script.sql文件中的所有命令都将在PSQL中执行,并且日志将存储在log_redshift_script.log文件中

enter image description here


1
被接受的答案是错误的。这才是正确的答案。 - Michael Fulton

6

有一款第三方命令行工具可用,名为PGCLI - 一个带有自动完成和语法高亮的Postgres命令行界面。

安装:

pip install pgcli

从命令行连接到POSTGRES服务器:

pgcli -h localhost -U xyz -d app_db

官方文档请访问PGCLI


1

1
如果已安装pgadmin v4,则只需将这些库从C:\Program Files\pgAdmin 4\v4\runtime\复制即可:
libcrypto-1_1-x64.dll
libpq.dll
libssl-1_1-x64.dll

这些对我来说足以让我从一个客户端Windows 10 x64 PC连接到远程Postgres 13服务器。请注意,上述ZIP归档文件中附带的库略有不同,并且具有更多的依赖项。

0
我有点作弊。我在Windows服务器上安装了sqlbackupandftp.com - 它有一个免费版本,可以安排单个数据库备份。在二进制文件中,pg_dump.exe是存在的 - 通常在C:驱动器上,例如C:\ Program Files(x86)\ SQLBackupAndFTP \ dbms \ PostgreSql。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接