IT story

psql-명령 결과를 파일로 저장

hot-time 2020. 4. 9. 08:08
반응형

psql-명령 결과를 파일로 저장


psql을 사용하여 \dt데이터베이스의 모든 테이블을 나열하고 결과를 저장해야합니다.

psql 명령의 결과를 파일로 내보내는 구문은 무엇입니까?


psql의 도움말 ( \?)에서 :

\ o [FILE] 모든 조회 결과를 파일 또는 파이프로 전송

명령 순서는 다음과 같습니다.

[wist@scifres ~]$ psql db
Welcome to psql 8.3.6, the PostgreSQL interactive terminal

db=>\o out.txt
db=>\dt
db=>\q

psql \o명령은 이미 jhwist에 의해 설명되었습니다.

다른 방법은 COPY TO명령을 사용 하여 서버의 파일에 직접 쓰는 것입니다. 이것은 psql의 표 형식이 아닌 파싱하기 쉬운 형식으로 덤프된다는 장점이 있습니다. 를 사용하여 다른 테이블 / 데이터베이스로 가져 오는 것도 매우 쉽습니다 COPY FROM.

NB! 여기에는 수퍼 유저 권한이 필요 하며 서버 의 파일 기록됩니다 .

예: COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';')

';'로 CSV 파일을 만듭니다. 필드 구분자로.

항상 그렇듯이 자세한 내용은 설명서를 참조하십시오


\copypostgres 명령은 모든 사용자가 사용할 수 있습니다. \ dt에서 작동하는지 여부를 모르지만 일반적인 구문은 다음 링크 Postgres SQL copy 구문 에서 재현됩니다.

\copy (select * from tempTable limit 100) to 'filenameinquotes' with header delimiter as ','

위는 선택 쿼리의 출력을 csv 파일로 제공된 파일 이름으로 저장합니다.

편집하다:

내 psql 서버의 경우 다음 명령이 작동 합니다. 이전 버전 v8.5입니다.

copy (select * from table1) to 'full_path_filename' csv header;

COPY tablename TO '/tmp/output.csv' DELIMITER ',' CSV HEADER; 이 명령은 전체 테이블을 csv로 저장하는 데 사용됩니다


다음과 같은 오류가 발생하면 ufgtoolspg=> COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';') ; ERROR: must be superuser to COPY to or from a file HINT: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.

이 방법으로 실행할 수 있습니다 :

psql somepsqllink_or_credentials -c "COPY (SELECT foo, bar FROM baz) TO STDOUT (format csv, delimiter ';')" > baz.csv


내부 psql 명령이 있다고 가정하지만 util-linux-ng 패키지 script에서 명령을 실행할 수도 있습니다 .

DESCRIPTION 스크립트는 터미널에 인쇄 된 모든 것을 타이프 스크립트로 만듭니다.


아래 쿼리를 사용하여 CSV 파일로 결과 저장

\ file (쿼리)을 'file path'csv 헤더로;

\ copy (구매 _ 주문에서 name, date_order 선택) '/home/ankit/Desktop/result.csv'cvs 헤더;

이것이 당신을 돕기를 바랍니다.

참고 URL : https://stackoverflow.com/questions/5331320/psql-save-results-of-command-to-a-file

반응형