Existuje starý trik na použití pojmenované roury (funguje na Unixu, nevím o Windows)
- vytvořte pojmenovaný kanál:
mkfifo /tmp/omyfifo - zapište do něj obsah souboru:
zcat mycsv.csv.z > /tmp/omyfifo & - [z psql]
copy mytable(col1,...) from '/tmp/omyfifo' - [po dokončení]:
rm /tmp/omyfifo
zcat na pozadí se zablokuje, dokud nebude čtečka (zde:COPY příkaz) začne číst a skončí na EOF. (nebo pokud čtečka zavře potrubí)
Můžete dokonce spustit několik párů potrubí + zcat, které budou zachyceny několika COPY příkazy ve vašem skriptu SQL.
To bude fungovat z pgadmin, ale fifo (proces +zcat) by měl být přítomen na počítači, kde běží server DBMS.
BTW:podobný trik pomocí netcat lze použít ke čtení souboru ze vzdáleného počítače (což by samozřejmě mělo zapsat soubor do síťového soketu)