program story

명령 줄에서 PostgreSQL 쿼리 결과를 CSV 또는 TSV 형식으로 어떻게 인쇄합니까?

inputbox 2020. 12. 27. 10:51
반응형

명령 줄에서 PostgreSQL 쿼리 결과를 CSV 또는 TSV 형식으로 어떻게 인쇄합니까?


대화 형 psql 클라이언트가 아닌 셸에서 쿼리를 실행하고 출력의 CSV 또는 TSV 표현을 STDOUT에 인쇄하도록하고 싶습니다. psqlPostgreSQL 명령 줄 도구 중 하나를 사용하여 어떻게 수행 합니까?


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]$ 

참조 URL : https://stackoverflow.com/questions/6521531/how-do-you-print-the-result-of-a-postgresql-query-in-csv-or-tsv-format-from-the

반응형