postgresql批量插入数据脚本_postgresql – 批量插入数亿条记录

将2.37亿条记录插入到具有规则的表中(用于跨子表分发数据)的最快方法是什么?

我试过或考虑过:

>插入语句.

>事务性插入(BEGIN和COMMIT).

> COPY FROM命令.

> http://pgbulkload.projects.postgresql.org/

插入太慢(四天)而COPY FROM忽略规则(并有其他问题).

示例数据:

station_id,taken,amount,category_id,flag

1,'1984-07-1',0,4,

1,'1984-07-2',0,4,

1,'1984-07-3',0,4,

1,'1984-07-4',0,4,T

表结构(包含一个规则):

CREATE TABLE climate.measurement

(

id bigserial NOT NULL,

station_id integer NOT NULL,

taken date NOT NULL,

amount numeric(8,2) NOT NULL,

category_id smallint NOT NULL,

flag character varying(1) NOT NULL DEFAULT ' '::character varying

)

WITH (

OIDS=FALSE

);

ALTER TABLE climate.measurement OWNER TO postgres;

CREATE OR REPLACE RULE i_measurement_01_001 AS

ON INSERT TO climate.measurement

WHERE date_part('month'::text, new.taken)::integer = 1 AND new.category_id = 1 DO INSTEAD INSERT INTO climate.measurement_01_001 (id, station_id, taken, amount, category_id, flag)

VALUES (new.id, new.station_id, new.taken, new.amount, new.category_id, new.flag);

数据最初是在MySQL中,但出于性能原因(并利用PL / R扩展)必须切换到PostgreSQL.

谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值