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