首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Postgres中进行批量插入的最快方法是什么?

在Postgres中进行批量插入的最快方法是什么?
EN

Stack Overflow用户
提问于 2009-04-17 11:50:47
回答 10查看 370.5K关注 0票数 294

我需要以编程方式将10条数百万条记录插入postgres数据库。目前,我在一个“查询”中执行了1000条insert语句。

有没有更好的方法来做这件事,一些我不知道的大容量insert语句?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2009-04-17 03:57:23

PostgreSQL在最初如何最好地填充数据库方面有a guide,他们建议使用COPY命令来批量装载行。该指南还提供了一些关于如何加速该过程的好技巧,比如在加载数据之前删除索引和外键(并在加载后再添加它们)。

票数 265
EN

Stack Overflow用户

发布于 2015-01-27 18:18:29

除了使用COPY之外,还有一种替代方法,即Postgres支持的多行值语法。从documentation

INSERT INTO films (code, title, did, date_prod, kind) VALUES
    ('B6717', 'Tampopo', 110, '1985-02-10', 'Comedy'),
    ('HG120', 'The Dinner Game', 140, DEFAULT, 'Comedy');

上面的代码插入两行,但是您可以任意扩展它,直到达到预置语句标记的最大数量(可能是$999,但我不能百分之百确定)。有时人们不能使用COPY,对于这些情况,这是一个有价值的替代品。

票数 126
EN

Stack Overflow用户

发布于 2009-04-17 04:06:48

提高速度的一种方法是在一个事务中显式地执行多次插入或复制(比如1000次)。Postgres的默认行为是在每条语句之后提交,因此通过对提交进行批处理,可以避免一些开销。正如Daniel答案中的指南所说,您可能必须禁用自动提交才能正常工作。还要注意底部的注释,该注释建议将wal_buffers的大小增加到16MB,这可能也会有所帮助。

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/758945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档