如何在PostgreSQL中使用(安装)dblink?

Spr*_*dzy 56 sql postgresql dblink

我已经习惯了Oracle并在我的架构中创建了一个dblink,然后访问了这样一个远程数据库:mytable@myremotedb那么对于PostgreSQL有没有相同的做法?

现在我正在使用这样的dblink:

SELECT logindate FROM dblink('host=dev.toto.com
                              user=toto
                              password=isok
                              dbname=totofamily', 'SELECT logindate FROM loginlog');
Run Code Online (Sandbox Code Playgroud)

当我执行此命令时,我收到以下错误:

提示:没有函数匹配给定的名称和参数类型.您可能需要添加显式类型转换.

有人有想法吗?我们是否必须"激活"dblinks或在使用它们之前做些什么?

我们要查询的远程数据库有什么问题吗?我们还要激活dblink吗?我一直都有could not establish connection.这是行类型:

SELECT dblink_connect_u('host=x.x.x.x dbname=mydb user=root port=5432');
Run Code Online (Sandbox Code Playgroud)

IP地址正确,Postgres正在远程服务器上运行.任何的想法?

Erw*_*ter 111

使用PostgreSQL 9.1或更高版本,可以简化其他模块的安装.已注册的扩展(包括dblink)可以安装CREATE EXTENSION:

CREATE EXTENSION dblink;
Run Code Online (Sandbox Code Playgroud)

安装到默认架构中(public默认情况下).search_path在运行命令之前,请确保已正确设置,并且所有必须使用该模式的用户都可以看到该模式.

或者,您可以安装到您选择的任何架构:

CREATE EXTENSION dblink SCHEMA extensions;
Run Code Online (Sandbox Code Playgroud)

看到:

每个数据库运行一次.或者在标准系统数据库中运行它以自动template1将其添加到每个新创建的数据库中.手册中的详细信息.

您需要首先在服务器上安装提供模块的文件.对于Debian和衍生产品来说,这显然是对postgreSQL 9.1的postgresql-contrib-9.1软件包.


Anv*_*esh 22

我正在使用DBLINK连接内部数据库以进行跨数据库查询.

参考本文.

安装DbLink扩展.

CREATE EXTENSION dblink;
Run Code Online (Sandbox Code Playgroud)

验证DbLink:

SELECT pg_namespace.nspname, pg_proc.proname 
FROM pg_proc, pg_namespace 
WHERE pg_proc.pronamespace=pg_namespace.oid 
   AND pg_proc.proname LIKE '%dblink%';
Run Code Online (Sandbox Code Playgroud)

测试数据库的连接:

SELECT dblink_connect('host=localhost user=postgres password=enjoy dbname=postgres');
Run Code Online (Sandbox Code Playgroud)


evg*_*eni 12

在linux上,找到dblink.sql,然后在postgresql控制台中执行类似这样的操作来创建所有必需的函数:

\i /usr/share/postgresql/8.4/contrib/dblink.sql 
Run Code Online (Sandbox Code Playgroud)

您可能需要安装contrib包: sudo apt-get install postgresql-contrib


Unr*_*son 4

安装模块通常需要您运行数据库安装中包含的 SQL 脚本。

假设类似linux的操作系统

find / -name dblink.sql
Run Code Online (Sandbox Code Playgroud)

验证位置并运行它