Postgresql 如何使用变量在函数中指定复制到目标?

Postgresql 如何使用变量在函数中指定复制到目标?,postgresql,Postgresql,在PostgreSQL 9.3中,我想创建一个函数,将表中的数据复制到CSV文件中。此功能的工作原理是: CREATE OR REPLACE FUNCTION backup_tables(character varying) RETURNS integer AS $BODY$ declare fileName text; begin copy adhoc_query to 'c:/misc/adhoc_query.csv' csv; return 1; end

在PostgreSQL 9.3中,我想创建一个函数,将表中的数据复制到CSV文件中。此功能的工作原理是:

CREATE OR REPLACE FUNCTION backup_tables(character varying)
  RETURNS integer AS
$BODY$

declare
     fileName text;
begin

    copy adhoc_query to 'c:/misc/adhoc_query.csv' csv;
    return 1;

end;
但是,我从中得到一个语法错误:

CREATE OR REPLACE FUNCTION backup_tables(character varying)
  RETURNS integer AS
$BODY$

declare
    fileName text;
begin
    fileName = 'c:/misc/adhoc_query.csv';
    copy adhoc_query to fileName csv;
    return 1;

end;

pgAdmin将copy命令中的“fileName”标记为错误的位置。我希望能够让调用方指定目标文件,但这似乎是不可能的。有办法吗?

路径不能使用文本以外的任何内容。但是您可以从变量构建命令,然后执行它

...
EXECUTE 'COPY (' || adhoc_query || ') TO ''' || fileName || ''' CSV;';
...

非常感谢。我本不希望这样做,但如果我必须这样做,我必须这样做。