Der er et gammelt trick til at bruge et navngivet rør (fungerer på Unix, kender ikke til Windows)
- opret et navngivet rør:
mkfifo /tmp/omyfifo
- skriv filindholdet til det:
zcat mycsv.csv.z > /tmp/omyfifo &
- [fra psql]
copy mytable(col1,...) from '/tmp/omyfifo'
- [når færdig] :
rm /tmp/omyfifo
zcat
i baggrunden vil blokere indtil en læser (her:COPY
kommando) begynder at læse, og den slutter ved EOF. (eller hvis læseren lukker røret)
Du kan endda starte flere pipes+zcat-par, som vil blive opfanget af flere COPY
udsagn i dit sql-script.
Dette vil fungere fra pgadmin, men fifo (+zcat-processen) bør være til stede på den maskine, hvor DBMS-serveren kører.
BTW:et lignende trick ved hjælp af netcat kan bruges til at læse en fil fra en ekstern maskine (som selvfølgelig skal skrive filen til netværkssocket)