处理大数据量
-- 批量插入1000条数据
DO $$
DECLAREbatch_size INT := 1000;
BEGINWHILE TRUE LOOP-- 插入数据sqlINSERT INTO target_table (column1, column2) values (batch_size,"111");--循环判断条件batch_size := batch_size-1;IF batch_size = 0 THENEXIT;END IF;END LOOP;COMMIT; -- 每批提交一次事务
END
$$;
-- 每次插入 1000 条记录(需结合应用层实现)
DO $$
DECLAREbatch_size INT := 1000;offset INT := 0;
BEGINWHILE TRUE LOOPINSERT INTO target_table (column1, column2)SELECT column1, column2 FROM source_table LIMIT batch_size OFFSET offset;IF NOT FOUND THENEXIT;END IF;COMMIT; -- 每批提交一次事务offset := offset + batch_size;END LOOP;
END
$$;