Exemplo com nome de arquivo no estilo Unix:
COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv' format csv;
Leia o manual sobre
COPY
(link para a versão 8.2).Você deve usar um caminho absoluto para o arquivo de destino. Certifique-se de colocar aspas duplas nos nomes dos arquivos com espaços. Exemplo para MS Windows:
COPY (SELECT * FROM tbl)
TO E'"C:\\Documents and Settings\\Tech\Desktop\\myfile1.csv"' format csv;
No PostgreSQL 8.2 , com
standard_conforming_strings = off
por padrão, você precisa usar barras invertidas duplas, porque \
é um caractere especial e interpretado pelo PostgreSQL. Funciona em qualquer versão. Está tudo no bom manual:
nome do arquivo
O nome do caminho absoluto do arquivo de entrada ou saída. Os usuários do Windows podem precisar usar umE''
string e barras invertidas duplas usadas como separadores de caminho.
Ou a sintaxe moderna com
standard_conforming_strings = on
(padrão desde o Postgres 9.1):COPY tbl -- short for (SELECT * FROM tbl)
TO '"C:\Documents and Settings\Tech\Desktop\myfile1.csv"' (format csv);
Ou você também pode usar barras para nomes de arquivos no Windows.
Uma alternativa é usar o meta-comando
\copy
do cliente de terminal padrão psql
. Você também pode usar uma GUI como pgadmin e copiar/colar da grade de resultados para o Excel para pequenas consultas.
Resposta intimamente relacionada:
- Copiar resultados de uma visualização do PostgreSQL em um banco de dados para uma tabela em outro
Solução semelhante para MySQL:
- Exportando dados MYSQL para Excel/CSV via php