-
postgres 데이터 파일로 저장하기프로그래밍/DB 2020. 10. 5. 13:22728x90반응형
https://www.postgresql.org/docs/10/static/sql-copy.html
postgresql 테이블의 데이터를 csv로 저장하려면 copy to 문을 사용하면 된다.
아래 copy 문법과 예시 참조할 것.
문법 )
COPY table_name [ ( column_name [, ...] ) ] FROM { 'filename' | STDIN } [ [ WITH ] [ BINARY ] [ OIDS ] [ DELIMITER [ AS ] 'delimiter' ] [ NULL [ AS ] 'null string' ] [ CSV [ HEADER ] [ QUOTE [ AS ] 'quote' ] [ ESCAPE [ AS ] 'escape' ] [ FORCE NOT NULL column_name [, ...] ] ] ] COPY { table_name [ ( column_name [, ...] ) ] | ( query ) } TO { 'filename' | STDOUT } [ [ WITH ] [ BINARY ] [ OIDS ] [ DELIMITER [ AS ] 'delimiter' ] [ NULL [ AS ] 'null string' ] [ CSV [ HEADER ] [ QUOTE [ AS ] 'quote' ] [ ESCAPE [ AS ] 'escape' ] [ FORCE QUOTE { column_name [, ...] | * } ] ] ]
delimiter는 구분자를 무엇으로 할 지 지정하는 옵션이다.
force quote는 컬럼에서 null이 아닌 컬럼 내용을 둘러싸는 기능을 이야기 한다.
컬럼 이름을 설정해서 그 컬럼만 할 수 있고 *를 선택하면 전체 컬럼에 반영이 된다.
copy to 에서 csv format을 선택할때만 사용할 수 있는 옵션이다.
If
*
is specified, non-NULL
values will be quoted in all columns. This option is allowed only inCOPY TO
, and only when usingCSV
format.예시 1 ) , 를 구분자로 해서 파일로 저장하는 케이스
COPY (
SELECT language, title FROM cms_title WHERE language != 'en' AND title != 'Blog'
) TO '/path/to/csv/cms_title_dump.csv' WITH CSV HEADER DELIMITER ';';
예시 2) 빈 문자열을 구분자로 하고 "로 칼럼을 감싸서 저장하는 케이스
copy ( select name, name, bldnm from table1 ,table2 where table1.id = table2.id order by namecnt desc)
to '/home/housename.csv' with csv header DELIMITER ' ' FORCE QUOTE *;
outputname,name,bldnm"엘지메트로시티2","엘지메트로시티2","엘지메트로시티""파크리오","파크리오","파크리오""성원","성원","성원아파트""잠실엘스","잠실엘스","잠실엘스"예시 3) 중간에 다른 문자를 포함해서 저장하는 케이스
copy ( select name, '{', name, bldnm, '}' from table1 ,table2 where table1.id = table2.id order by namecnt desc)
to '/home/housename.csv' with csv header DELIMITER ' ';
예시 4 ) 탭으로 구분자를 할 경우
COPY (
SELECT language, title FROM cms_title WHERE language != 'en' AND title != 'Blog'
) TO '/path/to/csv/cms_title_dump.csv' WITH CSV HEADER DELIMITER E'\t';
728x90반응형'프로그래밍 > DB' 카테고리의 다른 글
mysql 에러 - ERROR 1410 (42000): You are not allowed to create a user with GRANT (0) 2022.08.20 mysql 자주 사용하는 구문들 정리 (8) 2022.03.28 postgresql 테이블에 칼럼 추가 + 커멘트 달기 (0) 2020.08.14 postgresql 테이블 사이즈 확인하기 (2) 2020.07.18 mysql 데이터베이스 백업 스크립트 (0) 2020.05.02