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

我习惯了甲骨文,并在我的架构中创build一个dblink,然后像这样访问一个远程数据库: mytable@myremotedb ,反正有没有做到与PostgreSQL相同?

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

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

当我执行这个命令,我得到以下错误:

提示:没有函数匹配给定的名称和参数types。 您可能需要添加明确的types转换。

有人有想法吗? 我们必须“激活”dblinks或使用它们之前做一些事情吗?

在我们要查询的远程数据库上有什么要做的吗? 我们是否也必须激活dblink? 我一直有一个could not establish connection 。 这是行是types的:

 SELECT dblink_connect_u('host=xxxx dbname=mydb user=root port=5432'); 

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

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

 CREATE EXTENSION dblink; 

安装到您的默认模式(默认为public )。 在运行该命令之前,请确保您的search_path设置正确,并且所有必须使用该模式的用户都可以看到该模式。

每个数据库运行一次。 或者在标准系统数据库template1运行它,将其自动添加到每个新创build的数据库中。 手册中的细节。

您需要先提供安装在本地计算机上的文件。 对于Debian和衍生产品来说,这将是PostgreSQL 9.1的postgresql-contrib-9.1包。

在linux上,finddblink.sql,然后在postgresql控制台中执行如下的操作来创build所有必需的函数:

 \i /usr/share/postgresql/8.4/contrib/dblink.sql 

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

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

参考这篇文章。

安装DbLink扩展。

 CREATE EXTENSION dblink; 

validationDbLink:

 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%'; 

数据库testing连接:

 SELECT dblink_connect('host=localhost user=postgres password=enjoy dbname=postgres'); 

安装模块通常需要运行数据库安装附带的sql脚本。

假设类似linux的操作系统

 find / -name dblink.sql 

validation位置并运行它

它可以通过使用:

 $psql -d databaseName -c "CREATE EXTENSION dblink" 
 # or even faster copy paste answer if you have sudo on the host sudo su - postgres -c "psql template1 -c 'CREATE EXTENSION IF NOT EXISTS \"dblink\";'"