본문 바로가기
프로그래밍/Postgresql

PostgreSQL 테이블 백업 복원 PSQL COPY 사용방법

by 원피스랜드 2021. 1. 18.
반응형

PostgreSQL 데이터 복원 백업 PSQL 사용방법 

 

pg_dump, pg_restore 를 사용해서, 데이터 마이그레이션 작업을 하려고 검토 중이었으나, 백업 서버와 복원 서버의 SQL 서버 버전이 다르며, 일부 특정 테이블의 컬럼과 조건에 맞는 항목들만 복사 하고 싶은 경우 PSQL을 사용하니 더 편리하게 작업할수 있었다. 테이블 단위로 작업이 가능하다.

 

 

데이터의 백업 방법

 

cd C:\Program Files\PostgreSQL\11\bin
psql.exe --host=ynkim.db.com --port=5432 --username=ynkim -d ynkimDB

 

백업 대상서버의 정보를 입력하여, psql 을 실행하자!!

 

 

 

 

백업 ( 데이터 추출 )

 

1) 테이블 1개 전체 백업

 

\copy 테이블명 to 파일위치 WITH DELIMITER '|' CSV HEADER ENCODING 'UTF8';

 

\copy user_info_table to D:\db_dump\user_info_table.csv WITH DELIMITER '|' CSV HEADER ENCODING 'UTF8';

delimiter 옵션을 이용하여 구분자를 | \t, ; 등 상황에 맞게 변경해서 사용하면 된다.

 

2) 테이블 특정 컬럼만 백업

 

\copy 테이블명(컬럼명1, 컬럼명2...) to 파일위치 WITH DELIMITER '|' CSV HEADER ENCODING 'UTF8';

 

\copy user_info_table(customer_id, customer_name) to D:\db_dump\user_info_table.csv WITH DELIMITER '|' CSV HEADER ENCODING 'UTF8';


3) 쿼리 수행하여 특정 조건의 정보만 백업

 

\Copy (수행쿼리) To 파일명 WITH DELIMITER '|' CSV HEADER ENCODING 'UTF8';

\Copy (select customer_id, customer_name from user_info_table where customer_id='ynkim') to 'D:\db_dump\REAL\user_info_table.csv' WITH DELIMITER '|' CSV HEADER ENCODING 'UTF8';

 

 

복원 ( 데이터 삽입 )

복원할 서버에 동일하게 psql명령어를 이용해 접속한다.

 

cd C:\Program Files\PostgreSQL\11\bin

psql.exe --host=111.222.333.444 --port=5432 --username=shlee -d SH_DB

 

여기서 주의할점은 데이터 복원 대상 테이블의 컬럼이 더 많아도 상관없으나,  백업 추출한 데이터는 모두 대상이 되어야 한다.  쉽게 말하면 백업으로 추출한 데이터는 모두 넣어야 된다. 구문에 from 키워드를 사용한다. 

 

 

1. 테이블 한개 전체 삽입

 

\copy user_info_table from 'D:\db_dump\user_info_table .csv' with delimiter '|' csv header;

 

2. 테이블 특정 컬럼 단위로 삽입

\copy user_info_table(customer_id, customer_name) from 'D:\db_dump\user_info_table .csv' with delimiter '|' csv header;

 

 

 

반응형

댓글