我已经习惯了Oracle,并在我的模式中创建了dblink,然后访问了这样的远程数据库:mytable@myremotedb
,无论如何与PostgreSQL一样吗?
现在我正在像这样使用dblink:
SELECT logindate FROM dblink('host=dev.toto.com
user=toto
password=isok
dbname=totofamily', 'SELECT logindate FROM loginlog');
当我执行此命令时,出现以下错误:
有人有主意吗?使用它们之前,我们是否必须“激活” dblink或执行某些操作?
在我们要查询的远程数据库上有什么事情要做吗?我们也必须激活dblink吗?我一直有一个
could not establish connection
。这是行的类型:SELECT dblink_connect_u('host=x.x.x.x dbname=mydb user=root port=5432');
IP地址正确,并且Postgres正在远程服务器上运行。任何的想法?
最佳答案
从PostgreSQL 9.1的到以来,附加模块的安装非常简单。 Registered extensions like dblink
可以与 CREATE EXTENSION
一起安装:
CREATE EXTENSION dblink;
安装到默认架构中,默认架构为
public
。在运行命令之前,请确保正确设置了search_path
。对于必须使用该架构的所有角色,该架构必须可见。看到:另外,您可以通过以下方式安装到您选择的任何模式:
CREATE EXTENSION dblink SCHEMA extensions;
看到:
每个数据库运行一次。或在标准系统数据库
template1
中运行它,以将其自动添加到每个新创建的DB中。 Details in the manual.您需要首先在服务器上安装提供模块的文件。对于Debian及其衍生产品,显然是
postgresql-contrib-9.1
软件包-对于PostgreSQL 9.1。从Postgres 10开始,只有postgresql-contrib
元包。关于sql - 如何在PostgreSQL中使用(安装)dblink?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3862648/