我需要以编程方式将10条数百万条记录插入postgres数据库。目前,我在一个“查询”中执行了1000条insert语句。
有没有更好的方法来做这件事,一些我不知道的大容量insert语句?
发布于 2009-04-17 03:57:23
发布于 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,对于这些情况,这是一个有价值的替代品。
发布于 2009-04-17 04:06:48
提高速度的一种方法是在一个事务中显式地执行多次插入或复制(比如1000次)。Postgres的默认行为是在每条语句之后提交,因此通过对提交进行批处理,可以避免一些开销。正如Daniel答案中的指南所说,您可能必须禁用自动提交才能正常工作。还要注意底部的注释,该注释建议将wal_buffers的大小增加到16MB,这可能也会有所帮助。
https://stackoverflow.com/questions/758945
复制相似问题