2017-10-04 5 views
0

dblink을 처음 사용하기 때문에 방금 다른 데이터베이스의 테이블에 데이터를 삽입하는 스크립트를 만들었습니다. function dblink(unknown,unknown) does not exist 오류가 발생했습니다.확장 프로그램이 이미있는 경우에도 dblink가 존재하지 않습니까?

온라인으로 확인한 후 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

체크 아웃하는 확장이 설치되어 스키마. 내 경우에는이 스키마는 ext입니다 :

set search_path to public, ext; 

또는 기능 dblink(), 예를 들면의 정규화 된 이름을 사용합니다 :

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

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

는 검색 경로에 예를 스키마 이름을 추가

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

스키마 였고 공용 스키마에서 스키마로 변경해야했습니다. –

관련 문제