当扩展已经存在时,dblink还不存在?

9

我刚开始使用 dblink,我创建了一个脚本,从另一个数据库插入数据到一张表里,但是我收到了错误信息:function dblink(unknown,unknown) does not exist

于是我在网上查询并使用了 CREATE EXTENSION dblink 命令,但是我的电脑显示了这个消息:extension "dblink" already exists

我的 dblink 代码如下:

INSERT INTO tableA
 SELECT tbl.colA,tbl.colB,...
 FROM dblink('dbname=anotherDB', 'SELECT colA,colB,...
                 FROM tableB')
as tbl(colA,colB,...)
1个回答

12

查看扩展安装在哪个模式中。在我的情况下,该模式是ext

select nspname as schema
from pg_extension e
join pg_namespace n on n.oid = e.extnamespace
where extname = 'dblink'

 schema 
--------
 ext
(1 row) 

将模式名称添加到搜索路径中,例如:

set search_path to public, ext;

或者使用函数dblink()的限定名称,例如:

INSERT INTO tableA
 SELECT tbl.colA,tbl.colB,...
 FROM ext.dblink('dbname=anotherDB', 'SELECT colA,colB,...
                 FROM tableB')
as tbl(colA,colB,...)

它是模式,必须将其从公共模式更改为我的模式。 - Joshua Rajandiran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接