Postgres库分批次批量导出一张表到另一张表中
这个是pg库的函数模板,总是记不住啊
--PG库函数模板
create or replace function
func_name(v_batchcount integer) --参数名称和参数类型
return boolean --返回参数类型
as $BODY$
declare
--声明变量
begin
--函数逻辑
return true; --返回值
end;-- 结束
$BODY$ language plpgsql
这块就是实例了,传参为导入到另一张表的次数,修改outtable和inputtable就行了
CREATE OR REPLACE FUNCTION p_fx ( v_batchcount INTEGER ) RETURNS boolean AS $BODY$
DECLARE
v_sumcount INTEGER;--总行数
v_singlebatchcount INTEGER; --单次导出行数
BEGIN
--查出总行数
SELECT count( * ) INTO v_sumcount FROM outputtable;
--得到每次需要迁库的数量
v_singlebatchcount = v_sumcount / v_batchcount;
--开始遍历循环次数
FOR i IN 0..v_batchcount
LOOP
--打印出值到控制台
raise notice '%',i * v_singlebatchcount;
--进行插入
insert into inputtable SELECT * FROM outputtable
LIMIT v_singlebatchcount OFFSET i * v_singlebatchcount ;
END loop;
--返回值
Return true;
END;
$BODY$ LANGUAGE plpgsql
调用上面函数
select * from p_fx(2);