PostgreSQL

PostgreSQL에서 두 데이터베이스의 테이블 간에 데이터를 복사하려면 두 가지 주요 방법이 있습니다:

_Blue_Sky_ 2024. 12. 5. 18:53
728x90
728x90

  1. 파일로 내보내고 가져오기
    COPY 명령을 사용하여 데이터를 파일로 내보내고, 이를 다른 데이터베이스에 가져옵니다.
  2. dblink을 사용하여 직접 전송
    PostgreSQL의 확장 기능인 dblink를 활용하여 데이터베이스 간 직접 복사합니다.

아래 각각의 방법을 예제로 설명드리겠습니다.


1. 파일로 내보내고 가져오기

  1. 첫 번째 데이터베이스에서 파일로 내보내기
\c source_database_name; -- 소스 데이터베이스 연결
COPY source_table TO '/tmp/data.csv' DELIMITER ',' CSV HEADER;
  1. 두 번째 데이터베이스로 가져오기
\c target_database_name; -- 대상 데이터베이스 연결
COPY target_table FROM '/tmp/data.csv' DELIMITER ',' CSV HEADER;
  • 설명:
    • DELIMITER ','는 필드 구분자를 지정합니다.
    • CSV HEADER는 CSV 파일에 헤더가 포함되었음을 나타냅니다.
    • 경로 /tmp/data.csv는 서버가 접근할 수 있는 위치여야 합니다.

2. dblink를 사용하여 직접 복사

  1. dblink 확장 설치
CREATE EXTENSION IF NOT EXISTS dblink;
  1. 소스 데이터베이스에 연결하여 데이터 복사
INSERT INTO target_table
SELECT *
FROM dblink('dbname=source_database_name user=your_user password=your_password',
            'SELECT * FROM source_table')
AS source_table(column1 datatype, column2 datatype, ...);
  • 설명:
    • source_database_name은 소스 데이터베이스 이름입니다.
    • your_user와 your_password는 소스 데이터베이스의 사용자 계정입니다.
    • column1, datatype 등은 소스 테이블의 컬럼과 데이터 타입을 지정해야 합니다.

참고 사항

  • 권한: dblink를 사용할 경우, 두 데이터베이스 모두 적절한 권한이 필요합니다.
  • 네트워크 연결: 두 데이터베이스가 서로 다른 서버에 있는 경우, 네트워크 연결 설정이 필요합니다.
  • 성능: 대량 데이터 이동 시에는 파일을 사용하는 방법이 더 효율적일 수 있습니다.

어느 방법을 선택할지 상황에 맞게 판단하시면 됩니다. 추가적인 질문 있으시면 말씀해 주세요!

728x90
728x90