본문 바로가기

Dev Story/dev

[postgresql] extension dblink

PostgreSQL은 서로 다른 데이터베이스 간에 직접 연결이 되지 않는다.

시스템 카탈로그 pg_database 를 select 해보면 모든 데이터베이스 정보가 들어있어서 'DB명.테이블명' 이런 형식으로 접근을 해보았는데 안된다.


서로 다른 DB를 연결하기 위해서는 같은 시스템 내에 있더라도 dblink 를 사용해야 한다.

dblink란, DB 데이터베이스 세션 내에서 다른 PostgreSQL 데이터베이스 연결을 지원하는 Extension Module 이다.


Module을 사용하기 위해서는 추가 시켜줘야 하는데 사용하고자 하는 모듈이 있는지 먼저 확인을 해봐야 한다.

PostgreSQL 설치 디렉토리내 share\extension 에서 아래의 파일을 확인할 수 있다.


dblink--1.0.sql

dblink--unpackaged--1.0.sql


설치를 하게 되면 위의 쿼리를 실행시켜 function을 추가한다.

PostgreSQL 9.1 이상 버전에서 CREATE EXTENSION 문으로 설치할 수 있다.

 

삭제는 DROP EXTENSION 으로 한다.


pgAdmin에서 추가된 dblink관련 function을 확인할 수 있다.



pgAdmin에서 Extensions 메뉴를 통해서도 위에서 했던 작업도 가능하다.





그럼 실제로 dblink를 사용하는 방법은 다음과 같다. (http://www.postgresql.org/docs/9.2/static/dblink.html)



1. dblink_connect : 원격 데이터베이스에 접속한다. 한번 접속하면 disconnect 하기전까지 접속은 유지된다.


2. dblink : 연결된 데이터베이스에서 쿼리를 실행한다.


3. dblink_disconnect : 연결된 데이터베이스의 접속을 닫는다.