Obecně platí, že substituce proměnných funguje s meta-příkazy (počínaje zpětným lomítkem), ale \copy
je výjimkou, jak je zdokumentováno na manuálové stránce
psql :
Nesouhlasím s komentářem @BaconBits k otázce, že plpgsql EXECUTE
by mohla být odpověď. Příkaz na straně serveru, dynamický nebo jiný, nebude mít přístup k systému souborů na straně klienta, na rozdíl od \copy
. Můžete použít COPY
místo toho, ale vyžaduje to být superuživatel a tento soubor má být přístupný pro postgres
uživatele na serveru.
Věřím, že \copy
z proměnného názvu souboru, musí být proměnná vložena do skriptu před psql
čte to. Skript SQL můžete integrovat do skriptu shellu a vložit jej do psql
jako opravitelný řetězec zde nebo jej filtrujte přes sed
nebo perl
nebo jakoukoli podobnou unixovou metodou.