database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 6426 게시물 읽기
No. 6426
dblink 사용하기
작성자
김종섭(winglet)
작성일
2005-11-16 15:01ⓒ
2005-11-16 16:06ⓜ
조회수
4,674

xml:lang="EN-US">예제를 보고 따라해보기도 하고

했는데 ;

 

xml:lang="EN-US">영 잘

안되네요....

 

xml:lang="EN-US">

"#000000">postgresql-contrib.rpm 은 설치되어 있으니 설치는

된거 같은데..

 

xml:lang="EN-US">문서를 아무리

봐도 사용법을 모르겠습니다.

 

 

 

xml:lang="EN-US">도데체 어떻게 사용해야

되는건가요 dblink!!

 

 

 

xml:lang="EN-US">다시 질문 올립니다

^^;

 

이 글에 대한 댓글이 총 5건 있습니다.

-- 도데체 어떻게 사용해야 되는건가요 dblink!!

-- 다시 질문 올립니다 ^^;

 

dblink 란 것은 이렇게 사용해야만 된다고 pgsql 기본 매뉴얼에

명시되있지는 않습니다. 따라서 자기가 예제 C/C++ 소스를 보고

분석하는 것이 제일 좋습니다.

이것이 pgsql 의 사용을 어렵게 하는데,

 실은 이렇게 해야  실력이 쑥쑥 올라갑니다.

 

정 어려우시면 어떤 예제가 안되는 것인지 올려주시기 바랍니다.

초보대왕님이 2005-11-16 23:54에 작성한 댓글입니다.
이 댓글은 2005-11-16 23:54에 마지막으로 수정되었습니다. Edit

염치불구하고 질문올립니다.

 

 

  connstr

 

    standard libpq format connection string,

    e.g. "hostaddr=127.0.0.1 port=5432 dbname=mydb user=postgres password=mypasswd"

 

 

이부분에서 넘어가야

 

select dblink_connect('dbname=template1'); 요게 될거 같은데

 

e.g. "hostaddr=127.0.0.1 port=5432 dbname=mydb user=postgres password=mypasswd" 어디에서 어떻게 하라는건지를 잘 모르겠습니다.

 

 

김종섭(winglet)님이 2005-11-18 10:15에 작성한 댓글입니다.
이 댓글은 2005-11-18 11:35에 마지막으로 수정되었습니다.

 

잘 안쓰는 기능으로.. 알고있는데.. dblink 로 검색해 보면.. 문제가

있다고들 하네여.. 머 어찌됐건.. 함 해 봤습니다. 참고가 되시길..

 

우선 contrib에 있는 dblink를 설치 해야 겠죠..

정상적으로 했다면.. 아래와 같은 함수들이 보일겁니다.

 

SELECT proname FROM pg_proc WHERE proname like 'dblink%' ;

        proname

-------------------------
 dblink
 dblink
 dblink
 dblink
 dblink_build_sql_delete
 .....

 

우선 test할 2개의 DB를 만들었습니다.

 

test1 DB

--------------------------------

CREATE TABLE test1 ( number int2 , member_id varchar(20) ) ;
INSERT INTO test1 VALUES('1','qwer1') ;
INSERT INTO test1 VALUES('2','qwer2') ;

 

test2 DB

--------------------------------

CREATE TABLE test2 ( number int2 , member_id varchar(20) ) ;
INSERT INTO test2 VALUES('1','asdf1') ;
INSERT INTO test2 VALUES('3','asdf3') ;

 

위과 같이 간단히 table을 만들고.. 자료를 insert..

 

테스트는 test1 DB 에 있는 test1 table 과

              test2 DB 에 있는 test2 table 을 조인해 보겠습니다. 

 

dblink connection 연결

dblink_connect(text connstr)
dblink_connect(text connname, text connstr)

test2=# SELECT dblink_connect('myconn','dbname=test1') ;

 dblink_connect
-------------------
 OK

 

위에 적으신 ip, pass등의 부분은 dblink_connect() 함수의 두번째 인자로(text connstr) 들어가는 것입니다.  두개의 인자를 가지고 있는

dblink_connect() 함수는 persistent  connection 을 여는 것입니다.

 

join SQL 실행

test2=# SELECT *

FROM dblink('myconn','SELECT number, member_id FROM test1')

AS test1(number int2, member_id varchar(20)), test2

 WHERE test1.number = test2.number ;

 

 number | member_id | number | member_id
--------+-----------+--------+-----------
      1     | qwer          |      1     | asdf
(1 row)

위와 같은 결과가 나옵니다.

 

dblink connection 종료

test2=# SELECT dblink_disconnect('myconn') ;
 dblink_disconnect
-------------------
 OK

아마.. 원래 질문이.. 다른 DB 간의 join 이였죠..?

 

이건 그냥 제가 만들어 본거고.. contrib/dblink/sql 밑에 보시면..

더 괜찮은 예제가 많은거 같네여.. 참고하세요~~

 

 

 

댓들은.. 소스코드 형식으로 추가 하는게 안되는구나.ㅡㅡ;;

장효순(icastone)님이 2005-11-18 11:40에 작성한 댓글입니다.
이 댓글은 2005-11-18 11:43에 마지막으로 수정되었습니다.

dblink는 일반적으로 다른 데이터베이스의 자료를 dump / restore 없이 가져와야할 경우가 있을 때 select 전용으로 사용하시면 안전합니다.

 

그외 복잡한 제약조건이 걸려있는 상황에서 insert, update 작업까지 해야할 상황이라면,

 

namespace(schema) 개념을 사용하는 것이 나을 것같네요.

 

select ns1.tablename, ns2.tablename2

from na1.tablename, ns2.tablename2

where .....

김상기(ioseph)님이 2005-11-18 15:50에 작성한 댓글입니다.

드디어 성공했습니다!!

장효순님 정말 감사해요~ 근 일주일은 걸린거 같네요 ㅠ _ㅠ

김종섭(winglet)님이 2005-11-22 12:08에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6435could not receive data from client: Connection reset by peer [1]
김동훈
2005-11-21
4686
6434주소필드의 공백 2글자이상을 공백1글자로 치환하려면... [2]
김창욱
2005-11-21
2634
6431vc++(api)로 응용프로그램 만들려면? [1]
심상호
2005-11-19
2440
6426dblink 사용하기 [5]
김종섭
2005-11-16
4674
6425Linux에서 8.1.0 소스설치시 문의점이 있습니다. [1]
신지
2005-11-16
3378
6424progress DB odbc 드라이버 구합니다. [2]
라원상
2005-11-16
3329
6422[긴급문의] Progress DB 관련 [1]
김진우
2005-11-15
2644
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다