Postgresql批量收集

时间:2017-07-17 11:42:08

标签: postgresql plpgsql bulkinsert

我试图将oracle app迁移到postgresql。 在oracle的一个函数中,我有下一个代码:

    V_Step := 3;
command := 'declare
      type tab_data is table of ' || tab_name ||
           '%ROWTYPE;

     CURSOR raw_data is SELECT * FROM ' || tab_name ||
           '_vw;
      mydata tab_data;
      V_COUNTER  integer := 0;
      BEGIN
      open raw_data;
      LOOP
        V_COUNTER := V_COUNTER + 1;
        FETCH raw_data BULK COLLECT INTO mydata LIMIT ' ||
           to_char(current_setting('Gaps.BATCH_SIZE')::bigint) || ';
        FORALL i IN 1..mydata.COUNT
             INSERT  INTO ' || tab_name ||
           ' VALUES mydata(i);

        EXIT WHEN raw_data%NOTFOUND;
      END LOOP;
      RAISE NOTICE ''V_COUNTER = '%', V_COUNTER;
      --commit;
      close raw_data;
      END;';
V_Step := 4;

   RAISE NOTICE '%', command;

V_Step := 5;
EXECUTE command;

我们正在尝试从远程oracle表(我有链接)加载到本地postgresql表中的大量数据。在oracle中使用bulk比使用常规insert into x select * from更快。 postgresql中是否有与oracle的批量相似的函数?

0 个答案:

没有答案