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

Posted

技术标签:

【中文标题】如何在 Windows 上仅安装 PostgreSQL 的客户端工具?【英文标题】:How do I install just the client tools for PostgreSQL on Windows? 【发布时间】:2016-02-24 14:24:38 【问题描述】:

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

是否可以从任何地方为 PostgreSQL 获取仅限客户端的 Windows 二进制安装?

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

【问题讨论】:

为什么不在你的 linux 机器中使用 ssh 并在那里使用 psql? 基本上是因为我开发的任何脚本都将在我的本地 PC 上,因此从那里运行更容易。我所有的开发工作都在 Windows 控制台提示符下进行,因此从那里运行我的 SQL 更加方便。 @mehmet 他在要求一个客户,如果他要求那很明显他不需要/想要/不能在 Linux 机器上运行 psql。 @Fact 的回答应该是 2020 年的公认答案。 【参考方案1】:

不幸的是,没有真正的客户端“唯一”安装程序。

您可以做的是下载完整 Postgres 二进制文件的 ZIP 存档:

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

然后从中删除“服务器”部分。

解压后会得到以下目录:

斌 文档 包括 库 pgAdmin III 分享 堆栈生成器 符号

您可以删除 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 目录来克服这个问题。

这样就剩下 psql 客户端所需的这些文件(来自 bin 目录):

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

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


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

【讨论】:

谢谢。我实际上并不太担心剥离不需要的服务器位——我要避免的主要事情是安装程序创建帐户、服务和数据库——所以只要有 zip 分发就可以了。我先找了这个,但只能在 EnterpriseDB 站点上找到安装程序(postgresql 站点只指向enterprisedb.com/products-services-training/pgdownload,并且没有从那里到 bin 下载页面的链接:-()。 哎呀。刚刚注意到 postgresql.org 下载页面上的“高级用户”链接。我上次一定是错过了。 对于 PostgreSQL >= 9.6.3 上的任何人想知道iconv.dll 去了哪里,请改用libiconv-2.dll 可以确认这在 2020 年仍然有效。对于仅将 psql.exe 用于客户端工具非常有帮助。 @a_horse_with_no_name 我在二进制 zip 安装过程中收到此错误“initdb.exe 初始化数据库集群已停止工作”任何想法都非常感谢?【参考方案2】:

截至 2020 年,当您单击从 here 下载完整安装程序时,单击下一步和下一步,您将获得仅安装命令行的选项 - 工具 。记得在 PATH 变量中添加 bin 文件夹的路径。

【讨论】:

这是最简单但更好的方法,恕我直言。【参考方案3】:

实际上pgAdmin中有客户端CLI工具。您只需将它从https://www.postgresql.org/download/windows/ 安装到您的Windows 机器上。

然后,您将能够在 C:\Program Files (x86)\pgAdmin III\1.22C:\Program Files (x86)\pgAdmin 4\v2\runtime 等文件夹中找到这些工具,具体取决于您安装的 pgAdmin 版本。

【讨论】:

【参考方案4】:

感谢所有在此线程上发帖的人。

为了它的价值,我从 PostgreSQL 10.10 获得了 psql.exe,在 Windows 10 下工作,仅包含来自 zip 存档的以下文件:

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找到了这个解决方案

HTH。

【讨论】:

谢谢。这份清单正是我想要的。非常感谢。【参考方案5】:

我意识到这是一个较老的问题,但是当我使用 Windows 安装程序安装最新版本的 Postgres (10.4) 时,它让我可以选择仅安装命令行工具。当提示选择我要安装的内容时,我只是在安装程序窗口中取消选中 serverpgadmin

【讨论】:

注意,到目前为止,我在 PostgreSQL 网站上看到了两个 Windows 安装程序,其中只有一个可以选择仅安装命令行工具。 EnterpriseDB 安装程序有选项,BigSQL 安装程序没有仅命令行工具选项。【参考方案6】:

以下是我在 Windows 上使用 postgres12 psql 连接到 Amazon Redshift 的步骤:

    从以下位置下载 postgres 12.4: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

    运行安装程序,这将需要几分钟并提示您提供安装选项

    如下图所示选择command line tools并安装

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

    打开cmd并运行命令 set PGCLIENTENCODING=UTF8

    运行 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

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

【讨论】:

接受的答案是……错误。这应该是答案【参考方案7】:

有一个第三方命令行工具可用,称为 PGCLI - Postgres 的命令行界面,具有自动完成和语法突出显示功能。

安装:

pip install pgcli

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

pgcli -h localhost -U xyz -d app_db

官方文档请访问PGCLI

【讨论】:

【参考方案8】:

如果安装了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 存档附带的库略有不同,并且具有更多依赖项。

【讨论】:

【参考方案9】:

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

【讨论】:

以上是关于如何在 Windows 上仅安装 PostgreSQL 的客户端工具?的主要内容,如果未能解决你的问题,请参考以下文章

在Windows上仅使用Boost.DateTime和错误

Postgres绿色版本安装 windows

在 Windows 7 上安装 Postgres for PHP(64 位)

忘记 Postgres 上的管理员密码(Windows 安装),无法重置

以windows服务方式快速部署免安装版Postgres数据库

如何在 CAShapeLayer 上仅填充形状的一部分