我在本地机器上有一个带有Apache服务器和PostgreSQL 9.1数据库的开发站点。由于我使用的是Windows,我还安装了Cygwin。我想通过Cygwin访问数据库并进行一些查询,而不是使用pgAdmin III,但它告诉我找不到psql命令。我该如何在Cygwin中设置psql命令?
我在本地机器上有一个带有Apache服务器和PostgreSQL 9.1数据库的开发站点。由于我使用的是Windows,我还安装了Cygwin。我想通过Cygwin访问数据库并进行一些查询,而不是使用pgAdmin III,但它告诉我找不到psql命令。我该如何在Cygwin中设置psql命令?
我发现在Windows上最好的Cygwin组合是普通的Windows Postgres安装和Cygwin psql。
Cygwin psql(以及其他命令行工具)可以相当容易地从源代码编译。以下是9.2.4版本的步骤:
$ wget http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2
$ tar xjf postgresql-9.2.4.tar.bz2
$ cd postgresql-9.2.4/
$ ./configure
$ cd src/bin/psql
$ make
这将创建一个与Cygwin兼容的psql.exe二进制文件。然而,默认情况下,它会尝试使用Unix套接字连接到本地实例,而不是TCP。因此,请使用-h指定主机名并强制使用TCP,例如:
$ ./psql -h localhost -U postgres
将此psql.exe文件移动到您的路径某个位置(例如~/bin),并可能包装在脚本中以添加“-h localhost”选项,以便在未提供其他参数时方便使用。
源代码可以修改以更改默认值,但这需要实际工作;)
如果我理解你的问题正确,你正在运行cygwin,因为你想通过bash和psql在Windows上运行对PostgreSQL的查询,是吗?
Cygwin可以从bash运行Windows二进制文件,因此安装本机Windows版本并确保psql.exe在PATH
中。如有必要,您可以复制可执行文件。
没有必要安装本机Cygwin版本的PostgreSQL。只需使用现有的psql工具,并确保您可以访问Windows本机的psql.exe。
bin
目录中找到。不幸的是,Postgres 没有“客户端安装”包,但您可以简单地下载 ZIP 归档文件并解压缩它。然后您就会拥有本地的 psql 客户端了。 - user330315