Eksempel med Unix-stil filnavn:
COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv' format csv;
Læs manualen om COPY
(link til version 8.2).
Du skal bruge en absolut sti for målfilen. Sørg for at dobbeltcitere filnavne med mellemrum. Eksempel for MS Windows:
COPY (SELECT * FROM tbl)
TO E'"C:\\Documents and Settings\\Tech\Desktop\\myfile1.csv"' format csv;
I PostgreSQL 8.2 , med standard_conforming_strings = off
som standard skal du fordoble omvendte skråstreg, fordi \
er en speciel karakter og fortolkes af PostgreSQL. Virker i enhver version. Det hele står i den fine manual:
filnavn
Det absolutte stinavn for input- eller outputfilen. Windows-brugere skal muligvis bruge en E''
streng og dobbelte omvendte skråstreg brugt som sti-separatorer.
Eller den moderne syntaks med standard_conforming_strings = on
(standard siden Postgres 9.1):
COPY tbl -- short for (SELECT * FROM tbl)
TO '"C:\Documents and Settings\Tech\Desktop\myfile1.csv"' (format csv);
Eller du kan også bruge fremadgående skråstreger til filnavne under Windows.
Et alternativ er at bruge metakommandoen \copy
af standardterminalklienten psql
.
Du kan også bruge en GUI som pgadmin og kopiere/indsætte fra resultatgitteret til Excel for små forespørgsler.
Nært beslægtet svar:
- Kopiér resultater fra en PostgreSQL-visning i én DB til en tabel i en anden
Lignende løsning til MySQL:
- Eksport af MYSQL-data til Excel/CSV via php