2017-09-13 14 views
1

私はカスタムという名前のファイルを使用して、配列の各要素のforeachを行い、クエリを実行しようとした後、ディレクトリにコピーし、これをしています。ここで私が現在持っているコードです:PostgresのダイナミックCOPYステートメント

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声明でコピーなステートメントでエラーが発生しました。これを行うための代替方法はありますか?

+0

''形式(...)を実行します。 「postgresの動的SQLのコピー」を検索します。 –

答えて

1

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$ 
関連する問題