programing

Postgresql에 제목이 있는 CSV로 테이블을 내보내는 방법은 무엇입니까?

yellowcard 2023. 5. 15. 21:26
반응형

Postgresql에 제목이 있는 CSV로 테이블을 내보내는 방법은 무엇입니까?

Postgre를 내보내려고 합니다.명령줄을 통해 CSV 파일로 제목이 지정된 SQL 테이블을 CSV 파일로 내보내지만 제목은 지정되지 않습니다.

내 코드는 다음과 같습니다.

COPY products_273 to '/tmp/products_199.csv' delimiters',';
COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);

설명서에 설명된 바와 같이.

psql 명령줄에서:

\COPY my_table TO 'filename' CSV HEADER

마지막에는 세미콜론이 없습니다.

테이블 이름 대신 선택한 열 데이터만 가져오는 쿼리를 작성할 수도 있습니다.

COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;

관리자 권한으로

\COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;

Postgres에서 파일을 쓸 수 있는 권한이 없으면 명령줄에서 쿼리를 실행할 수 있습니다.

psql -U user -d db_name -c "Copy (Select * From foo_table LIMIT 10) To STDOUT With CSV HEADER DELIMITER ',';" > foo_data.csv

작동합니다.

psql dbname -F , --no-align -c "SELECT * FROM TABLE"

를 사용하는 가장 간단한 방법은 다음과 같습니다.--csv플래그:

psql --csv -c "SELECT * FROM products_273" > '/tmp/products_199.csv'

사용하는 버전 9.5의 경우 다음과 같습니다.

COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);

이 솔루션은 다음을 사용하여 작동했습니다.\copy.

psql -h <host> -U <user> -d <dbname> -c "\copy <table_name> FROM '<path to csvfile/file.csv>' with (format csv,header true, delimiter ',');"

다음은 Heroku PG 데이터베이스에 대한 pgsl connect를 사용하여 작동하는 파워 셸을 얻는 방법입니다.

먼저 클라이언트 인코딩을 다음과 같이 utf8로 변경해야 했습니다.\encoding UTF8

그런 다음 데이터를 CSV 파일에 덤프합니다.

\copy (SELECT * FROM my_table) TO  C://wamp64/www/spider/chebi2/dump.csv CSV DELIMITER '~'

CSV 파일을 좋아하지 않기 때문에 보통 TSV 파일을 구분 기호로 사용했는데, '\t'를 구분 기호로 추가할 수 없어서 거의 사용하지 않는 문자이기 때문에 ~를 사용했습니다.

복사 명령은 제한되지 않습니다.제한되는 것은 출력을 TO에서 STDOUT를 제외한 다른 곳으로 유도하는 것입니다.그러나 \o 명령을 통해 출력 파일을 지정하는 데는 제한이 없습니다.

\o '/tmp/products_199.csv';
COPY products_273 TO STDOUT WITH (FORMAT CSV, HEADER);

'fileablsoutepathwinname' 구분 기호 ', csv 헤더에 복사(내보낼 모든 sql 쿼리 데이터);

이를 사용하여 데이터를 내보낼 수도 있습니다.

여기에 제시된 다른 답변들이 저에게 실제로 효과가 없었기 때문에 이 답변을 올립니다.사용할 수 없습니다.COPY올바른 권한이 없었기 때문에 Postgres 내에서.그래서 " 그리드 행 내보내기"를 선택하고 출력을 UTF-8로 저장했습니다.

psql@Brian이 준 버전 또한 다른 이유로 나에게 효과가 없었습니다.작동하지 않는 이유는 Windows 명령 프롬프트(Windows를 사용하던 중)가 자체적으로 인코딩을 간섭했기 때문입니다.다음 오류가 계속 발생했습니다.

오류: "WIN1252" 인코딩에 바이트 시퀀스가 0x81인 문자가 "UTF8" 인코딩에 해당하지 않습니다.

제가 사용하게 된 해결책은 CSV 파일을 읽고 Postgres 테이블에 직접 삽입문을 발행하는 짧은 JDBC 스크립트(Java)를 작성하는 것이었습니다.이것은 효과가 있었지만 인코딩을 변경하지 않았다면 명령 프롬프트도 효과가 있었을 것입니다.

사용해 보십시오. "제품 복사_273 FROM '\tmp\products_199.csv' DELMITER ', CSV HEADER"

pgAdmin▁just▁다▁like▁your를 사용할 때와 마찬가지로 질의문을 강조 합니다.F5실행하고 누르다F9CSV를 저장할 위치를 선택할 수 있도록 파일 브라우저가 열립니다.

Azure Data Studio를 사용하는 경우 지침은 다음과 같습니다. Azure Data Studio: CSV로 저장합니다.

이것이 보편적인 해결책이 아니라는 것은 알지만 대부분의 경우 손으로 파일을 잡고 싶을 뿐입니다.

언급URL : https://stackoverflow.com/questions/1120109/how-to-export-table-as-csv-with-headings-on-postgresql

반응형