본문 바로가기
PostgreSQL

PostgreSQL COPY

by 이노닝 2023. 6. 20.

이번 글에는 PostgreSQL에 관한 글을 작성하고자 합니다.

대화형 클라이언트 도구에서 사용 할 수 있는 강력한 메타 명령인데요.

먼저 대화형 클라이언트를 구동하기 위해 커맨드 콘솔이 필요해 보입니다.

Windows, Linux 계열 모두 Cmd 콘솔을 제공하니 한번 시작해볼까요?

1. 먼저 환경 변수를 잡아야 합니다.

Example) Windows 계열.

COPY 명령어를 자주 사용 할 것 같으면 환경 변수에 저장을 해놔도 무방하지만,

CMD 에서 간편하게 1회성으로 환경변수를 등록 할 수 있습니다.

그 명령어는 바로 SET 입니다.

REM 윈도우 내 환경변수 지정하기.
SET PGHOST=LOCALHOST
SET PGPORT=5432
SET PGUSER=NONI
SET PGPASSWORD=NONIPWD
SET PGDATABASE=NONIDATABASE
REM 데이터베이스의 인코딩이 별도 설정되어있다면 아래 변수도 추가하여야 합니다.
SET PGCLIENTENCODING=UTF-8

 

Example) Linux 계열.

Linux 계열의 환경변수는 EXPORT 로 사용합니다.

사용되는 명령어는 윈도우와 동일합니다.

 

 

EXPORT PGHOST=localhost
EXPORT PGPORT=5432
EXPORT PGUSER=NONI
EXPORT PGPASSWORD=NONIPWD
EXPORT PGDATABASE=NONIDATABASE
EXPORT PGCLIENTENCODING=UTF-8

이후 psql 을 입력하여 Post DB 인스턴스에 연결합니다.

사실은

psql --host=localhost --port=5432 --username=NONI --password=NONIPWD --dbname=NONIDATABASE

이 방법으로도 접근이 가능합니다.

CSV 파일을 POST DB에 넣기.

\COPY NONI_TABLE_NAME (id, value_1, value_2, value_3, ...) FROM 'CSV_FILENAME.csv' WITH DELIMITER ',' ;

CSV --> POST DB IMPORT

CSV이지만 txt파일도 가능합니다.

하지만 POST DB 인코딩형식에 맞게 넣어야 합니다.

DELIMITER 구분자는 쉼표로 되어있네요. 기호에 맞게 입력해줍니다.

이제 반대차례입니다.

DB 테이블 데이터를 CSV로 추출하기.

\COPY (SELECT ID, VALUE_1, VALUE_2, VALUE_3, ... FROM NONI_TABLE_NAME WHERE VALUE_1 LIKE '%Temp%') TO 'NONI_TABLE_EXPORT.txt' WITH CSV HEADER DELIMITER ',' ENCODING 'UTF8';

위와 같이 진행하면 되는데요.

DB 데이터를 Export 할때에는 DELIMITER에 유의하여야 합니다.

데이터배이스 내에 쉼표(,)는 정말 다양하게 많이 쓰이기도 하고 데이터에 포함되어 있을 수 있기 때문에 뭔가 유니크한 구분자를 넣어주는 것이 좋습니다.

위 방식은 Windows, Linux 계열 모두 다 사용이 가능합니다.

'PostgreSQL' 카테고리의 다른 글

PostgreSQL Vacuum 작업으로 깔끔하게!  (0) 2023.07.03
postgresql.conf 쉽게 설정하기  (0) 2023.06.30
PostgreSQL 포트 열기  (0) 2023.06.30
PostgreSQL DB 백업(Dump) 및 복구(Restore)  (0) 2023.06.21