Esempio con nome file in stile Unix:
COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv' format csv;
Leggi il manuale su COPY
(link alla versione 8.2).
Devi utilizzare un percorso assoluto per il file di destinazione. Assicurati di citare due volte i nomi dei file con spazi. Esempio per MS Windows:
COPY (SELECT * FROM tbl)
TO E'"C:\\Documents and Settings\\Tech\Desktop\\myfile1.csv"' format csv;
In PostgreSQL 8.2 , con standard_conforming_strings = off
per impostazione predefinita, devi raddoppiare le barre rovesciate, perché \
è un carattere speciale e interpretato da PostgreSQL. Funziona in qualsiasi versione. È tutto nel bel manuale:
nome file
Il nome del percorso assoluto del file di input o di output. Gli utenti Windows potrebbero dover utilizzare una E''
stringhe e doppie barre rovesciate usate come separatori di percorso.
O la moderna sintassi con standard_conforming_strings = on
(predefinito da Postgres 9.1):
COPY tbl -- short for (SELECT * FROM tbl)
TO '"C:\Documents and Settings\Tech\Desktop\myfile1.csv"' (format csv);
Oppure puoi anche usare le barre in avanti per i nomi dei file in Windows.
Un'alternativa è usare il metacomando \copy
del client terminale predefinito psql
.
Puoi anche utilizzare una GUI come pgadmin e copiare/incollare dalla griglia dei risultati in Excel per piccole query.
Risposta strettamente correlata:
- Copia i risultati da una vista PostgreSQL in un DB in una tabella in un altro
Soluzione simile per MySQL:
- Esportazione di dati MySQL in Excel/CSV tramite php