如何在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\";'"