Postgresql Postgres:使用dblink进行远程连接

Postgresql Postgres:使用dblink进行远程连接,postgresql,dblink,Postgresql,Dblink,我们从我们的承包商那里获得了Postgres数据库凭据(SSL开启),允许我们使用pdAdmin 3连接到数据库。DB对我们是只读的(不能进行pg_转储),基本上承包商不会授予我们更多特权 我们需要从这个远程数据库获取一些数据到本地数据库。所以我想使用dblink来执行这个任务 我在psql上运行这个: insert into shifts select * from dblink('hostaddr=remote_addr port=9000 dbname=production user=us

我们从我们的承包商那里获得了Postgres数据库凭据(SSL开启),允许我们使用pdAdmin 3连接到数据库。DB对我们是只读的(不能进行pg_转储),基本上承包商不会授予我们更多特权

我们需要从这个远程数据库获取一些数据到本地数据库。所以我想使用dblink来执行这个任务

我在psql上运行这个:

insert into shifts select * from dblink('hostaddr=remote_addr port=9000 dbname=production user=user password=passwd', 'select user_id, location_id from shifts') as t1(user_id integer, location_id integer);
然后我得到:

错误:需要密码详细信息:如果 服务器不请求密码。提示:目标服务器的 必须更改身份验证方法

由于我对Postgres和dblink是新手,我不知道为什么它会抱怨没有密码。我想知道,要进行dblink连接,远程数据库是否需要授予更多权限

如果pdAdmin 3能够使用凭据连接到远程数据库,我应该如何使dblink工作


谢谢

是,只有超级用户可以向您提供通过DBLINK连接到设施的服务

无论您是否能够连接到数据库,只需运行下面的命令

SELECT dblink_connect('myconn', 'dbname=postgres');
SELECT dblink_connect('myconn', 'hostaddr=remote_addr port=9000 dbname=production user=user password=passwd');
只需在dbname之后输入您要连接的数据库的名称

你可以连接

dblink_connect_u
dblink_connect_()与dblink_connect()相同,只是 将允许非超级用户使用任何身份验证方法进行连接

postgres网站上的链接是

对于超级用户,请他们创建扩展

CREATE EXTENSION dblink;

对于您的数据库或架构。

您能否说明远程超级用户必须做些什么才能使用dblink?谢谢@nigong看到了您必须创建dblink扩展的答案