本文介绍了PostgreSQL-传递要复制到SQL脚本中的参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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 $$

但以上工作均未完成:(

推荐答案

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

使用psql%sgexec

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

这篇关于PostgreSQL-传递要复制到SQL脚本中的参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-01 12:45