제목이있는 PostgreSQL 테이블을 명령 줄을 통해 CSV 파일로 내보내려고하지만 제목이없는 CSV 파일로 내보낼 수 있습니다.
내 코드는 다음과 같습니다.
COPY products_273 to '/tmp/products_199.csv' delimiters',';
제목이있는 PostgreSQL 테이블을 명령 줄을 통해 CSV 파일로 내보내려고하지만 제목이없는 CSV 파일로 내보낼 수 있습니다.
내 코드는 다음과 같습니다.
COPY products_273 to '/tmp/products_199.csv' delimiters',';
답변:
COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
설명서에 설명 된대로 .
COPY
관리자 권한이 필요합니다. \COPY
문제가 발생하면 대신 사용하십시오 .
COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
psql 명령 행에서 :
\COPY my_table TO 'filename' CSV HEADER
끝에 세미콜론이 없습니다.
COPY
명령은 관리자 권한을 필요로
psql
접근 방식을 사용하면 액세스 권한이있는 모든 위치에 출력을 저장할 수 있습니다. 방금 psql
원격 서버에서 로컬 파일로 데이터를 가져 오는 방법을 사용했습니다 . 매우 매끄 럽습니다.
pg_dump -h remote | pg_restore -h localhost
.
psql -c "\COPY (SELECT * FROM mytable) TO STDOUT" > mytable.csv
테이블 이름 대신 선택된 열 데이터 만 가져 오는 쿼리를 작성할 수도 있습니다.
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;
\COPY ...
) 에서 종결 세미콜론이 필요하다고 생각하지 않습니다 . 그리고 적어도 내 버전의 psql (9.5.2)에서는 'DELIMITER'를 지정할 필요가 없었습니다. 기본값은 쉼표입니다.
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"
-F ,
사용 |
합니다. 감사!
COPY
재사용 할 파일을 만드는 설명 보다 사람이 읽을 수 있습니다.
내가 사용하는 버전 9.5의 경우 다음과 같습니다.
COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
다음은 pgsl connnect를 사용하여 Heroku PG 데이터베이스에 작동 셸을 얻는 방법입니다.
먼저 클라이언트 인코딩을 다음과 같이 utf8로 변경해야했습니다. \encoding UTF8
그런 다음 데이터를 CSV 파일로 덤프했습니다.
\copy (SELECT * FROM my_table) TO C://wamp64/www/spider/chebi2/dump.csv CSV DELIMITER '~'
CSV 파일이 마음에 들지 않기 때문에 ~를 구분 기호로 사용했습니다. 일반적으로 TSV 파일을 사용하지만 구분 기호로 '\ t'를 추가 할 수 없으므로 ~ 는 거의 사용하지 않는 문자 때문에 ~를 사용했습니다.
'fileablsoutepathwihname'구분 기호 ','csv 헤더에 복사 (anysql 쿼리 datawanttoexport);
이 u를 사용하면 데이터를 내보낼 수도 있습니다.
여기에 주어진 다른 답변들 중 어느 것도 실제로 나를 위해 일하지 않았기 때문에이 답변을 게시하고 있습니다. 나는 사용할 수 없었다COPY
올바른 권한이 없기 때문에 Postgres 내에서 . 그래서 "눈금 행 내보내기"를 선택하고 출력을 UTF-8로 저장했습니다.
psql
@ 브라이언에 의해 주어진 버전은 또한 다른 이유로 나를 위해 작동하지 않았다. 그것이 작동하지 않는 이유는 Windows 명령 프롬프트 (Windows를 사용하고 있었음)가 인코딩 자체를 방해하고 있었기 때문입니다. 이 오류가 계속 발생했습니다.
오류 : "WIN1252"인코딩에서 바이트 시퀀스가 0x81 인 문자가 "UTF8"인코딩에서 동일하지 않습니다.
내가 사용한 해결책은 CSV 파일을 읽고 Postgres 테이블에 직접 insert 문을 발행하는 짧은 JDBC 스크립트 (Java)를 작성하는 것이 었습니다. 이것은 작동했지만 인코딩을 변경하지 않은 경우 명령 프롬프트도 작동했을 것입니다.