서버2의 DB에서 서버1의 DB를 링크해서 view를 만들어 보자.

환경

서버 1

테이블명 myschema.accounts

user_id serial
username character varying(50)
password character varying(50)
email character varying(255)
created_on timestamp(6) without time zone
last_login timestamp(6) without time zone

서버 2

아무것도 없는 상태

dblink설치

여기서부터는 기본적으로 서버2에서만 밑 과정을 진행하면 되고, 서버1은 아무것도 할 필요없다.

postgres=> create extension dblink;

dblink커넥션 생성

SELECT dblink_connect('<커넥션 이름>', 'dbname=mydb port=<서버1 포트넘버> host=<서버1 ip주소> user=<서버1 유저명> password=<서버1 패스워드>');

연결을 위한 커넥션을 생성해준다. 없어도 되는데 나중에 귀찮으니 만드는게 편하다.

select * 
 from dblink('<커넥션 이름>','select * from myschema.accounts') 
  as t1 (user_id int, username varchar(50), password varchar(50), email varchar(255), created_on date, last_login date);

위에서 생성한 커넥션이름 첫번째 인자에 넣고, 두 번째엔 검색할 sql, 그리고 as뒤에는 알리아스랑 테이블 정의를 집어넣는다. 자세히는 모르겠는데, 대충 문자열은 varchar로, 날짜는 date로 하니까 에러없이 표시되었다.

CREATE VIEW view_name AS
  SELECT *
    FROM dblink('<커넥션 이름>','select * from myschema.accounts')
     as t1 (user_id int, username varchar(50), password varchar(50), email varchar(255), created_on date, last_login date);

위에서 연결한것 그대로 복사해와서 create view로 view를 만들어주면 되고, 서버2에 view가 만들어진것을 확인할 수 있다.