티스토리 뷰

 

 

1. DBLink란?

 

데이터베이스에서 정보를 주고받다보면,

 

종종 다른 데이터베이스에 있는 정보를 조회하거나,

 

아예 View를 만들어서 해당 데이터베이스에 추가해줘야 되는 경우가 생깁니다.

 

TEST 및 TEST_TEST 데이터베이스

 

TEST에 있는 자료를 TEST_TEST에서 조회해야 하는 경우지요.

 

데이터베이스를 복사해서 넣으면 되지 않느냐구요??

 

물론 그게 가능한경우는 괜찮지만,

 

TEST라는 데이터베이스에 데이터를 주고받는 프로그램이 별도로 존재하는 상황에는 조금 어려워집니다.

 

데이터 복사의 경우 갱신이 이루어지는 TEST 데이터베이스와는 달리,

 

복사된 뒤 데이터를 새로이 갱신받지 못하는 TEST_TEST의 데이터는 의미가 없어지는거죠.

 

이런경우에 TEST_TEST를 이용하는 프로그램이 DBLink라는 방법을 이용해서 TEST의 데이터를 가져오게 되는겁니다.

 

물론 동일 서버에 위치한 데이터 외의 다른 서버에 위치한 데이터도 조회가 가능하구요.

 

즉, DBLink란 타 데이터베이스에 위치한 데이터를 다른 데이터베이스에서 조회하기 위한 수단인겁니다.

 

 

2. 사용방법

 

일단, 데이터를 가져오고자 하는 서버의 정보를 알아야합니다.

 

해당 서버로 접속가능한 사용자 계정이 있어야되는건 당연하구요.

 

기본적인 쿼리 방법은 아래와 같습니다.

 

SQL문 샘플

 

여기서 1번줄부터 차례대로 설명을 해보자면

 

SELECT * FROM 까지는 기본적인 쿼리문입니다.

 

FROM 뒤에 어떤 테이블을 가져올거냐?

 

에서 우리가 이용하고자 하는 TEST 데이터베이스를 이용하기 위해 dblink라는 함수가 이용되는거죠.

 

물론 INSERT 및 기타 JOIN 등을 이용하실 때에도 테이블이 들어가는 부분에 dblink 함수를 이용할 수 있습니다.

 

그 이하 dblink 함수의 구조는,

 

dblink('데이터베이스 접속정보'::text, '가져올 테이블 조회(SELECT) 쿼리'::text) link(컬럼 컬럼형식)

 

입니다.

 

밑줄은 dblink 함수를 쓰기위한 문장이고,

 

굵은게 여러분이 직접 적어야 하는 정보를 한글로 풀이한겁니다.

 

즉 해당 함수를 해석해보면,

 

127.0.0.1 IP의 5432 포트에 postgres ID 및 postgres 패스워드로 접속을해서 TEST 데이터베이스를 참조할것이고,

 

해당 데이터베이스에서 SELECT idx, name, number FROM car 쿼리를 날려서 데이터를 가져올것이며,

 

idx, name, number 각각의 컬럼은 integer, character varying, character varying 의 형을 지닌다.

 

가 됩니다.

 

 

위의 쿼리는 샘플문과 구조를 보면 어떻게 써야될지 감이 대충 오시긴 할건데,

 

가장 큰 문제는 해당 데이터베이스에서 DBLink 기능을 이용한 적이 없다! 하실 경우에는 아마

 

이런 오류문을 보게될겁니다.

 

 

이 오류문의 내용은 길지만 사실 단 한가지만 보시면 됩니다.

 

dblink(text, text) 이름의 함수가 없음

 

바로 이것입니다.

 

postgreSQL의 경우 function이 준비되어 있지만 항상 사용할 수 있는 형태는 아닙니다.

 

따라서, 해당 함수를 쓸수있게끔 쿼리를 날려주는 작업이 필요한 상황인거죠

 

함수를 쓸 수 있게끔 활성화하는 쿼리는 아래와 같습니다.

 

CREATE EXTENSION dblink

 

간단하죠?

 

해당 데이터베이스에서 쿼리문을 날리게되면 dblink라는 함수를 이용할 수 있는 상태가 됩니다.

 

자 다시 앞서 작성한 쿼리를 날려봅시다.

 

완성!

 

위와같이 제대로 쿼리가 작동되어 타 데이터베이스의 정보를 가져온 것을 확인할 수 있습니다.

 

는 사실 포트가 5432가 아니라 5434라 급하게 수정했습니다만

 

 

3. 결론

 

중간과정이 좀 있었습니다만,

 

postgreSQL에서도 타 데이터베이스를 조회하기 위한 DBLink 기능이 해당 함수를 활성화 해줄 경우,

 

정상적으로 작동합니다.

 

참고가 되셨다면 감사합니다.

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함