1

集計データを csv ファイルにエクスポートしようとしています。以下のコードのように、postgresql のコマンド COPY を使用したいのですが、動的テーブルを返す EXECUTE コマンドからデータを取得しています。COPY コマンドはテーブルからのみデータを取得しますが、クエリの実行によって生成される列の数がわからないため、結果を一時テーブルに保存できません。また、大きなデータセットを保存しようとしていますが、中間テーブルに複製することは避けたいと思います. 誰かがこれに対する回避策を知っていますか?

CREATE OR REPLACE FUNCTION ExportSnapshotToCsv(qe TEXT)
 RETURNS void AS $$
BEGIN
 COPY (Execute qe) To '/tmp/test.csv' With CSV DELIMITER ',';
END; $$
LANGUAGE plpgsql;
4

1 に答える 1

1

使用するEXECUTE format

DO
$$
DECLARE
   myfile text := '/tmp/test.csv';
BEGIN

      EXECUTE format('COPY (
         SELECT * from %I
         ) TO ''%s'';'
       , 'employees',myfile);
 END 
$$;
于 2019-04-12T16:45:18.797 に答える