Voorbeeld met Unix-stijl bestandsnaam:
COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv' format csv;
Lees de handleiding over COPY
(link naar versie 8.2).
Je moet een absoluut pad gebruiken voor het doelbestand. Zorg ervoor dat u bestandsnamen dubbel aanhaalt met spaties. Voorbeeld voor MS Windows:
COPY (SELECT * FROM tbl)
TO E'"C:\\Documents and Settings\\Tech\Desktop\\myfile1.csv"' format csv;
In PostgreSQL 8.2 , met standard_conforming_strings = off
standaard moet je backslashes verdubbelen, omdat \
is een speciaal teken en wordt geïnterpreteerd door PostgreSQL. Werkt in elke versie. Het staat allemaal in de fijne handleiding:
bestandsnaam
De absolute padnaam van het invoer- of uitvoerbestand. Windows-gebruikers moeten mogelijk een
E''
. gebruiken string en dubbele backslashes gebruikt als padscheidingstekens.
Of de moderne syntaxis met standard_conforming_strings = on
(standaard sinds Postgres 9.1):
COPY tbl -- short for (SELECT * FROM tbl)
TO '"C:\Documents and Settings\Tech\Desktop\myfile1.csv"' (format csv);
Of u kunt onder Windows ook slashes gebruiken voor bestandsnamen.
Een alternatief is om het meta-commando \copy
. te gebruiken van de standaard terminalclient psql
.
Je kunt ook een GUI gebruiken zoals pgadmin en kopiëren/plakken van het resultatenraster naar Excel voor kleine zoekopdrachten.
Nauw verwant antwoord:
- Kopieer resultaten van een PostgreSQL-weergave in de ene DB naar een tabel in een andere
Vergelijkbare oplossing voor MySQL:
- MYSQL-gegevens exporteren naar Excel/CSV via php