C'è un vecchio trucco per usare una named pipe (funziona su Unix, non conosco Windows)
- crea una pipe denominata:
mkfifo /tmp/omyfifo - scrivi il contenuto del file:
zcat mycsv.csv.z > /tmp/omyfifo & - [from psql]
copy mytable(col1,...) from '/tmp/omyfifo' - [al termine] :
rm /tmp/omyfifo
Il zcat in background si bloccherà fino a quando un lettore (qui:il COPY comando) inizierà la lettura e terminerà a EOF. (o se il lettore chiude il tubo)
Potresti anche avviare più coppie pipe+zcat, che verranno raccolte da più COPY istruzioni nel tuo script sql.
Funzionerà da pgadmin, ma il processo fifo (+zcat) dovrebbe essere presente sulla macchina su cui è in esecuzione il server DBMS.
A proposito:un trucco simile usando netcat può essere usato per leggere un file da una macchina remota (che ovviamente dovrebbe scrivere il file sul socket di rete)