dblink 개요
dblink 이란?
dblink원격 데이터베이스에서 쿼리(일반적으로 SELECT이지만 행을 반환하는 모든 SQL 문일 수 있음)를 실행합니다.
두 개의 text인수가 주어지면 첫 번째 인수는 영구 연결의 이름으로 먼저 조회됩니다. 발견되면 해당 연결에서 명령이 실행됩니다. 찾을 수 없는 경우 첫 번째 인수는 for 와 같이 연결 정보 문자열로 취급되며 dblink_connect표시된 연결은 이 명령이 실행되는 동안만 이루어집니다.
– PostgreSQL 공식 문서 –
현재 데이터베이스 세션 내에서 물리적으로 다른 곳에 위치한 데이터베이스 연결을 지원하는 확장성 모듈이며, extension 설치 후 사용자 설정에 맞춰 사용하고 삭제하지 않는 이상 재설치는 불가합니다.
스키마 지정이 없으면 defualt로 public에 설치가 되므로 스키마 별로 사용이 필요한 경우 ALTER로 변경하거나 삭제 후 재설치하여 사용해야 합니다.
Extension 사용법
CREATE EXTENSION [ IF NOT EXISTS ] extension_name
[WITH] [SCHEMA schema_name]
[VERSION version]
[FROM old_version]
dblink 문법
SELECT dblink_connect(‘[id]’,
‘hostaddr = [address]
user = [user]
password = [password]
dbname = [db_name]
port = [port]’)
SELECT [result_name].* FROM dblink(‘[dblink_name]’, ‘[query]’) AS result_name
dblink 옵션
옵션 | 설명 |
---|---|
id | dblink 사용을 위한 link 명 |
address | 연결할 원격 DB의 host 주소 |
user | 연결할 원격 DB의 user 명 |
password | 연결할 원격 DB user의 비밀번호 |
db_name | 연결할 원격 DB 명 |
port | 연결할 원격 DB의 포트 번호 |
result_name | 원격 DB에 날린 쿼리 결과에 대한 임의의 이름 |
dblink_name | 위에서 정의한 DB link 명 |
query | 원격 DB에 날릴 쿼리 |
schema | 원격 DB에 접근하여 쿼리를 날릴 스키마 |
- 주의 사항
- SELECT dblink에서 SQL을 수행한 후 ‘ AS EX(필드명1 필드타입1, 필드명2 필드타입2 …… ) ‘ 으로 SELECT 에서 반환되어 표시할 컬럼의 필드타입을 지정해주어야함.
- dblink 사용을 위해 주체가 되는 디비 유저가 superuser 권한을 가지고 있어햐 함
- extension은 1개 DB당 1개의 LINK만 설치되므로 다른 스키마에서 사용하기 위해서는 EXTENSION 을 전부 ALTER 해야함.
설치 및 테스트
CREATE EXTENSION
$ psql -U postgres
postgres=# CREATE EXTENSION DBLINK;
postgres=# dx

DB LINK 사용
postgres=# SELECT dblink_connect(‘postgres’, ‘host=192.168.1.144 user=postgres password=1234 dbname=postgres port=5432’);
postgres=# select * from dblink(‘postgres’,’select * from t3′) as test(c char(5));
postgres=# SELECT dblink_disconnect(‘postgres’);

지금까지 ‘PostgreSQL의 dblink’에 관해 알아보았습니다
‘PostgreSQL의 pg_cron’를 바로 이어서 확인해보세요!