반응형
명령 줄에서 PostgreSQL 쿼리 결과를 CSV 또는 TSV 형식으로 어떻게 인쇄합니까?
대화 형 psql 클라이언트가 아닌 셸에서 쿼리를 실행하고 출력의 CSV 또는 TSV 표현을 STDOUT에 인쇄하도록하고 싶습니다. psql
PostgreSQL 명령 줄 도구 중 하나를 사용하여 어떻게 수행 합니까?
PostgreSQL 8.2 이상을 사용하는 경우 CSV에 다음을 사용하십시오.
psql -c "COPY (<select query>) TO STDOUT WITH CSV"
그리고 이것은 적절한 NULL을 가진 TSV입니다.
psql -c "COPY (<select query>) TO STDOUT WITH NULL AS ''"
CSV 양식은 큰 따옴표 문자가 포함 된 모든 필드를 올바르게 인용합니다. COPY에 대한 자세한 내용과 옵션은 특정 버전의 PostgreSQL 설명서를 참조하십시오.
Bohemian의 답변에서 시작하여 다음 플래그가 유용하다는 것을 알았습니다.
psql my_database -U myuser -A -F , -X -t -f /path/to/query.sql -o /path/to/output.csv
- 정렬되지 않은 출력 모드 : -A
- 필드 구분 기호로 쉼표 사용 : -F,
- psqlrc를 읽지 마십시오 : -X
- 튜플 만 (머리글 / 바닥 글 없음) : -t
- SQL 쿼리가 포함 된 파일 : -f
- 출력 파일 : -o
편집 됨 : -F 사용
다음을 통해 쉼표를 -F
사용하고 "정렬되지 않은 테이블 출력 모드"를 사용하십시오 -A
.
psql my_database -U myuser -A -F , -c "select * from mytable"
tsv 를 지정하려면 구분 기호 '\ t'를 사용하십시오.
psql my_database -U myuser -F'\t' --no-align -f mysqlfile.sql -o outputfile.tsv
csv 를 지정하려면 구분 기호 ','를 사용하십시오.
psql my_database -U myuser -F',' --no-align -f mysqlfile.sql -o outputfile.csv
헤더, 구분 기호 및 인용 옵션을 지정할 수 있는 복사 명령 도 가능합니다.
psql my_database -U my_user -c "copy (select a.id,b.id from my_table_a as a inner join my_table_b as b on b.id = a.id) to STDOUT"
-F 명령 줄 매개 변수를 사용하여 필드 구분자를 psql에 지정할 수 있습니다.
헤더와 함께 TSV로 내보내기
다음과 같이 HEADER를 포함 할 수 있습니다.
\COPY (SELECT * FROM tca) TO '/.../metab/tca.tsv' WITH DELIMITER E'\t' CSV HEADER;
\COPY (SELECT * FROM tca) TO '/...a/metab/tca.tsv' WITH NULL AS '' DELIMITER E'\t' CSV HEADER;
예 (PSQL) :
[metabolism]# \COPY (SELECT * FROM tca) TO '/mnt/Vancouver/programming/data/metabolism/tca.tsv' WITH NULL AS '' DELIMITER E'\t' CSV HEADER;
COPY 22
세게 때리다:
[victoria@victoria tsv]$ pwd
/mnt/Vancouver/programming/data/metabolism/tsv
[victoria@victoria tsv]$ head -n3 tca.tsv
uuid src tgt rel rel_type
878b87de-0ca8-49a8-9f77-a24353e251d2 oxalosuccinic acid oxoglutaric acid 1.1.1.42 2
7fd9cf88-495b-491b-956e-294f19097923 isocitric acid oxoglutaric acid 1.1.1.41 2
[victoria@victoria csv]$
반응형
'program story' 카테고리의 다른 글
Android : dialogfragment가 표시되는지 확인하는 방법 (0) | 2020.12.28 |
---|---|
Swift를 사용하여 앱 델리게이트에서 뷰 컨트롤러 열기 (0) | 2020.12.28 |
Java에서 Stateless Object 란 무엇입니까? (0) | 2020.12.27 |
Wordpress는 마이그레이션 후 install-php로 계속 리디렉션합니다. (0) | 2020.12.27 |
Android 및 Gradle에서 SimpleXML 사용 (0) | 2020.12.27 |