본문 바로가기

PROGRAMING/DOCKER

로컬에서 docker의 postgresql 로 db외부 연결(postgres_fdw)

외부 서버내의 docker 내의  postgresql에서   내컴퓨터 로컬의 postgresql로 연결하고 싶었다.
그런데 docker에서 외부의 주소로 접근할수가 없었다.

그런데 마치 접속되는것처럼 나타났다. 2분이 소유되고 결과는 나타나지 않았다.



그래서 내 로컬에서   docker의  postgresql conatiner에 접속하는 것으로 바꿨다.
잘되었다.  1초내외로 잘조회 되었다.


create extension postgres_fdw

create server d_stockweb foreign data wrapper postgres_fdw options (host '192.168.0.13', port '5432' ,dbname 'stockweb');  

CREATE USER MAPPING FOR postgres SERVER d_stockweb
OPTIONS (user 'postgres', password 'POSTGRES');

-- Table: etl.mig_av_actr

-- DROP TABLE etl.mig_av_actr;


CREATE Foreign TABLE etl_mig_av_actr
(
    actor_idx bigint NOT NULL,
    birth character varying(100) COLLATE pg_catalog."default",
    debut_dt character varying(100) COLLATE pg_catalog."default",
    height character varying(100) COLLATE pg_catalog."default",
    img character varying(1000) COLLATE pg_catalog."default",
    img_s character varying(1000) COLLATE pg_catalog."default",
    name_en character varying(100) COLLATE pg_catalog."default",
    name_kr character varying(100) COLLATE pg_catalog."default",
    size character varying(100) COLLATE pg_catalog."default",
    sync character varying(1) COLLATE pg_catalog."default",
    crt_dtm timestamp without time zone NOT NULL,
    updt_dtm timestamp without time zone NOT NULL,
    bra_size character varying(100) COLLATE pg_catalog."default",
    name_cn character varying(100) COLLATE pg_catalog."default",
    dscr character varying(4000) COLLATE pg_catalog."default",
    dscr_ttl character varying(4000) COLLATE pg_catalog."default",
    o_nm character varying(1000) COLLATE pg_catalog."default",
    img_l character varying(1000) COLLATE pg_catalog."default",
    img_ls character varying(1000) COLLATE pg_catalog."default",
    size_b character varying(100) COLLATE pg_catalog."default",
    size_h character varying(100) COLLATE pg_catalog."default",
    size_w character varying(100) COLLATE pg_catalog."default"
)
server d_stockweb    OPTIONS (schema_name 'public', table_name 'mig_av_actr');


select count(*) from etl_mig_av_actr where updt_dtm>'20210401'

이런 느낌이었다.

 

기타 테이블들.

CREATE Foreign TABLE etl_mig_av_actr_cmt
(
    cmt_idx bigint NOT NULL,
    actor_idx bigint NOT NULL,
    cmt character varying(4000) COLLATE pg_catalog."default" NOT NULL,
    crt_dtm timestamp without time zone NOT NULL,
    dslk_cnt bigint NOT NULL,
    lk_cnt bigint NOT NULL,
    writer character varying(100) COLLATE pg_catalog."default" NOT NULL    
)
server d_stockweb    OPTIONS (schema_name 'public', table_name 'mig_av_actr_cmt');