如何在postgresql中将pg-service.conf服务用作dblink连接字符串

时间:2015-10-28 06:30:16

标签: postgresql dblink

我的pg_service.conf文件包含以下配置

pg_service.conf

[test-service]
host=localhost
port=5432
user=test-user
password=*****
dbname=test-table

运行以下查询时显示错误

查询

SELECT id, name 
FROM                                                                                                      
  DBLINK('service=test-service',
    'SELECT id, name FROM student' 
  ) AS sq0(id int, name text) order by 1;

错误

ERROR:  could not establish connection
DETAIL:  definition of service "test-service" not found

1 个答案:

答案 0 :(得分:0)

您是否定义了PGSERVICEFILEPGSERVICE环境变量?如果没有,请按如下所示在环境文件中定义它们,

export PGSERVICEFILE=${HOME}/.pg_service.conf   # location to the .pg_service.conf file
export PGSERVICE=test-service

如果要使用多个架构,则可以使用.pg_service.conf来定义数据库名称,ip和端口,并使用.pgpass文件来定义用户名和密码。请不要将.pgpass放在您的主文件夹中。同样,应该设置以上变量。

.pg_service.conf示例

[test-service]
host=localhost
port=5432
dbname=test-table

.pgpass示例

localhost:5432:test-table:test-user1:******
localhost:5432:test-table:test-user2:******

然后您可以通过psql --user=test-user1 -c "query"

从终端执行查询