我正在使用远程Unix机器,我从本地机器通过SSH连接。在另一台主机上有一个Postgres数据库,我需要使用psql从我的远程机器连接。
我希望能够从输入文件运行查询并将结果保存到输出文件,但是我没有设法自动设置密码,超出了每次运行查询时都需要这样做。< / p>
我尝试了以下内容:
运行
psql "user=username password=password host=hostname port=port dbname=database"`
包含我的username
,password
,hostname
,port
和database
值。
这工作正常但我没有找到为输入/输出文件添加参数的方法(不需要通过Postgres交互式环境)。
根据another SO question,我创建了一个文件~/.pgpass
,其格式如下:hostname:port:database:username:password
然后chmod 0600 ~/.pgpass
但是在连接时:psql -h hostname -U username -d database -w
psql忽略了这一点(我收到了以下失败的身份验证消息。)
psql:fe_sendauth:未提供密码。
请注意,我的远程计算机的名称与我的用户名不同,因此在创建.pgpass
文件时也可能会出现问题。还有其他办法吗?
有什么想法吗?
答案 0 :(得分:0)
这工作正常,但我找不到添加参数的方法 输入/输出文件
您可以将输入文件重定向到psql,也可以在-f
选项中指定它:
psql < input.sql
psql -f input.sql
对于输出文件,只需将psql的输出重定向到它:
psql -f input.sql > output.txt