Postgresql - 在 sql 脚本中将参数传递给 COPY

Postgresql - pass parameters to COPY in an sql script

我可以在我的 sql 脚本中使用 -v v1=foo 语法来很好地查询,但我不知道如何在复制语句中使用该参数。我想执行如下脚本:

psql -d my_db -f ./exports.sql -v v1="'/Users/username/test.json'"

并在脚本中执行以下版本:

copy (
 select * from bar     
) to :v1;

DO $$ 
BEGIN
  EXECUTE
   'copy (select * from bar) to ' || :v1;
END $$

DO $$ 
BEGIN
  EXECUTE
   format('copy (select * from bar) to %L',:v1);
END $$

但是none上面的工作:(

变量替换在字符串文字中不起作用。

使用psql\gexec:

SELECT format(
          $$copy (select * from bar) to %L$$,
          :v1
       ) \gexec