Postgres 动态 COPY 语句

Postgres Dynamic COPY Statement

我正在尝试 运行 对数组的每个元素执行 foreach 的查询,然后将其复制到具有自定义命名文件的目录中。这是我目前的代码:

DO
$do$
declare
    x varchar;
    y varchar;
    arr varchar[] := array['item1','item2'];
begin
    foreach x in array arr
    loop
        y := concat('C:\Outputs\output_' , x , '.csv');
        copy (select * from pdtable where pdtable.area = x) to y With CSV;
    end loop;
end
$do$

然而,这在 to y 语句的复制语句中遇到错误。有其他方法可以做到这一点吗?

https://www.postgresql.org/docs/current/static/functions-string.html

DO
$do$
declare
    x varchar;
    y varchar;
    arr varchar[] := array['item1','item2'];
begin
    foreach x in array arr
    loop
        y := concat('C:\Outputs\output_' , x , '.csv');
        execute format('copy (select * from pdtable where pdtable.area = %L) to %L With CSV',x,y);
    end loop;
end
$do$