如何在 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 分享 堆栈生成器 符号您可以删除 doc
、include
、pgAdmin III
、StackBuilder
和 symbols
目录。据我所知(但我不确定)客户端也不需要share
或lib
目录,但您需要对其进行测试。这样就只剩下bin
目录了。
我认为psql
中的本地化错误消息可能需要share
目录,但我不确定。
在bin
目录中,您基本上可以删除所有.exe 文件(当然psql.exe
除外)。您还可以删除所有wx*.dll
文件,它们仅在 pgAdmin 中需要。 libxml2.dll
和 libxslt.dll
也只有服务器需要。
如果您确实需要其他一些客户端工具,则可能需要保留
pg_dump.exe pg_dumpall.exe pg_restore.exe这种方法的一个缺点是需要安装 Visual C++ Redistributable。但是您也可以通过简单地将安装它的计算机中的MSVCR120.DLL
放入bin
目录来克服这个问题。
这样就剩下 psql 客户端所需的这些文件(来自 bin
目录):
当然,您也可以从现有 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.22
或 C:\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) 时,它让我可以选择仅安装命令行工具。当提示选择我要安装的内容时,我只是在安装程序窗口中取消选中 server
和 pgadmin
。
【讨论】:
注意,到目前为止,我在 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 7 上安装 Postgres for PHP(64 位)
忘记 Postgres 上的管理员密码(Windows 安装),无法重置