我已经习惯了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。对于必须使用该架构的所有角色,该架构必须可见。看到:
  • How does the search_path influence identifier resolution and the "current schema"

  • 另外,您可以通过以下方式安装到您选择的任何模式:
    CREATE EXTENSION dblink SCHEMA extensions;
    

    看到:
  • Best way to install hstore on multiple schemas in a Postgres database?

  • 每个数据库运行一次。或在标准系统数据库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/

    10-11 02:52