Postgresql 데이터 csv로 저장 및 csv데이터 insert하기

쿼리결과 csv 파일로 저장하기

Database: Postgresql
실행환경: Docker

  1. psql 접속하여 실행하는 법

    1
    2
    3
    4
    5
    6
    7
    docker exec -it <데이터베이스 컨테이너> bash

    # 컨테이너 접속 후
    psql -U <name> -d <database>

    # psql 접속 후
    COPY (select * from <tablename>) To '/path/fiilename.csv' With CSV DELIMITER ',' HEADER;
  2. 스크립트 작성으로 만들기

    1
    2
    3
    4
    5
    6
    docker exec <데이터베이스 컨테이너> \
    su - postgres -c \
    '
    psql -U <username> -d "<database name>" \
    -c "COPY (select * from <table name>) To '"'/path/fiilename.csv'"' With CSV DELIMITER '"','"' HEADER; "
    '

    주의사항: 따옴표 내부에서 문자열 조건이나 경로 입력 시 ‘“‘문자열’”‘로 감싸서 작성해야 문자열로 인식한다.

csv 파일 import 하기

  1. psql 접속하여 실행하는 법

    1
    2
    3
    4
    5
    6
    7
    docker exec -it <데이터베이스 컨테이너> bash

    # 컨테이너 접속 후
    psql -U <name> -d <database>

    # psql 접속 후
    COPY <tablename> FROM '/path/filename.csv' DELIMITER ',' CSV HEADER;
  2. 스크립트 작성으로 만들기

    1
    2
    3
    4
    5
    6
    docker exec <데이터베이스 컨테이너 이름> \
    su - postgres -c \
    '
    psql -U <username> -d "<database name>" \
    -c "COPY <table name> FROM '"'/path/filename.csv'"' DELIMITER '"','"' CSV HEADER; "
    '

스크립트 작성 중 알게 된 것
도커로 실행하는 레일스 앱에 스크립트에서 명령을 실행하기위해서는 다음과 같이 작성한다.

1
2
3
docker exec -i <container> rails c <<EOF
# 실행하고 싶은 명령어
EOF
Author

han Ju Ryeon

Posted on

2022-03-24

Updated on

2022-03-24

Licensed under

댓글