[postgresql] PostgreSQL : SQL 쿼리의 결과 데이터를 Excel / CSV로 내보내기
Unix 스타일 파일 이름의 예 :
COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv' format csv;
(버전 8.2 에 대한COPY
링크)에 대한 설명서를 읽으십시오 . 대상 파일에 대한 절대 경로
를 사용해야 합니다. 공백으로 파일 이름을 큰 따옴표로 묶어야합니다. MS Windows의 예 :
COPY (SELECT * FROM tbl)
TO E'"C:\\Documents and Settings\\Tech\Desktop\\myfile1.csv"' format csv;
에서 PostgreSQL을 8.2 로 standard_conforming_strings = off
하기 때문에 기본적으로 당, 당신은 이중 백 슬래시에 필요한 \
특수 문자과 PostgreSQL에 의해 해석이다. 모든 버전에서 작동합니다. 그것은 모두 훌륭한 매뉴얼에 있습니다 .
파일 이름
입력 또는 출력 파일의 절대 경로 이름입니다. Windows 사용자는
E''
경로 구분 기호로 사용되는 문자열과 이중 백 슬래시 를 사용해야 할 수 있습니다 .
또는 standard_conforming_strings = on
(Postgres 9.1 이후 기본값)을 사용 하는 현대 구문 :
COPY tbl -- short for (SELECT * FROM tbl)
TO '"C:\Documents and Settings\Tech\Desktop\myfile1.csv"' (format csv);
또는 Windows에서 파일 이름에 슬래시 를 사용할 수도 있습니다 .
대안은 기본 터미널 클라이언트 의 메타 명령\copy
psql
을 사용하는 것 입니다.
pgadmin 과 같은 GUI를 사용하고 작은 쿼리를 위해 결과 그리드에서 Excel로 복사 / 붙여 넣기 할 수도 있습니다 .
밀접하게 관련된 답변 :
- 한 DB의 PostgreSQL보기에서 다른 DB의 테이블로 결과 복사
MySQL에 대한 유사한 솔루션 :
- PHP를 통해 MySQL 데이터를 Excel / CSV로 내보내기
에서 PostgreSQL의 9.4 의 헤더와 CSV 파일을 만들 수 있습니다 우분투 :
COPY (SELECT * FROM tbl) TO '/home/user/Desktop/result_sql.csv' WITH CSV HEADER;
참고 : 폴더는 쓰기 가능해야합니다.
-------------------이것은 나를 위해 일했습니다.
COPY (SELECT * FROM table)
TO E'C:\\Program Files (x86)\\PostgreSQL\\8.4\\data\\try.csv';
필자의 경우 문제는 특수 폴더에 대한 쓰기 권한에 있었지만 (관리자로 일했지만) PostgreSQL에서 원래 데이터 폴더의 경로를 변경 한 후 성공했습니다.
-------------------Squirrel, SQL Workbench / J, AnySQL, ExecuteQuery와 같은 여러 GUI 도구는 Excel 파일로 내보낼 수 있습니다.
이러한 도구의 대부분은 PostgreSQL 위키에 나열되어 있습니다.
http://wiki.postgresql.org/wiki/Community_Guide_to_PostgreSQL_GUI_Tools
-------------------"오류 : 서버 파일을 열 수 없습니다"/ 파일 ": 권한이 거부되었습니다"와 같은 오류가 발생하면 다음과 같이 수정할 수 있습니다.
같은 문제를 겪었고 이것이 내가 찾은 해결책입니다. / home $ cd / home 아래에 새 폴더 (예 : tmp)를 만듭니다. postgres를 해당 폴더의 소유자로 만듭니다. $ chown -R postgres : postgres tmp copy in tmp the 데이터베이스에 쓰려는 파일과 postgres가 소유하고 있는지 확인하십시오. 그게 다야. 그 후에는 사업을해야합니다.
-------------------postgres (Ubuntu)의 올바른 스크립트는 다음과 같습니다.
COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv';
출처
https://stackoverflow.com/questions/39916901