По принцип заместването на променливи работи с мета-команди (започващи с обратна наклонена черта), но \copy
е изключение, както е документирано в manpage
на psql :
Не съм съгласен с коментара на @BaconBits към въпроса, че EXECUTE
на plpgsql може да е отговорът. Изявление от страна на сървъра, динамично или друго, няма да има достъп до файловата система от страна на клиента, противно на \copy
. Можете да използвате COPY
вместо това, но изисква да сте суперпотребител и този файл да бъде достъпен за postgres
потребител на сървъра.
Вярвам, че към \copy
от име на файл с променлива, променливата трябва да бъде инжектирана в скрипта преди psql
чете го. Можете да интегрирате SQL скрипта в shell скрипт и да го подадете към psql
като тук-низ с възможност за корекция или го филтрирайте чрез sed
или perl
или друг подобен unix-ish метод.