Isso não é possível com o SQL
COPY
comando. COPY
apenas copia de um arquivo ou STDIN . Você pode gravar o conteúdo da variável em um arquivo ou canalizá-lo via STDIN. Só faz sentido para mais de um par de linhas.
Acho que não entendi sua pergunta antes da atualização, você provavelmente não precisa disso:
O caminho do arquivo não pode ser trocado como outros itens de dados e você não pode usar uma instrução preparada para isso. Construa o todo antes de executar ou recorrer ao SQL dinâmico com uma função do lado do servidor como:
CREATE OR REPLACE FUNCTION f_cp(_file text)
RETURNS void AS
$BODY$
BEGIN
EXECUTE format($$COPY zip_codes FROM %L DELIMITER ',' CSV$$, $1);
END
$BODY$
LANGUAGE plpgsql;
Ligar:
SELECT f_cp('/var/lib/postgres/sync/myfile.csv')
format()
requer Postgres 9.1 ou posterior.