插入或更新postgresql en mass

时间:2012-03-01 00:19:32

标签: ruby-on-rails postgresql insert rails-postgresql

我在ruby哈希中有16000个项目。 (下载为XML并转换为哈希) 我需要将它们推入数据库。 每周一次,其中一些改变,但我不知道哪些。

我所看到的建议是直接进入SQL,因为活动记录(在该网站上)只是直接插入的速度慢70倍。甚至没有考虑更新/插入

我想知道什么方法最好.. 有没有人收到过他们不得不反复插入/更新的大量(或很小)数据? 你能提出建议吗?

2 个答案:

答案 0 :(得分:2)

将大量数据加载到PostgreSQL中的最快方法是COPY命令。

只需生成包含所有数据的分隔文件,TRUNCATE您的表,删除所有索引和约束,然后使用COPY加载数据。

然后,在目标表上运行ANALYZE,然后创建索引和约束。

http://www.postgresql.org/docs/9.1/static/sql-copy.html

答案 1 :(得分:1)

我有一个非常相似的用例。我直接将XML文件读入数据库,用xpath()将其解析为临时表,并使用良好的所有SQL进行所有检查和升级。对我来说效果非常好(而且速度很快)。

我最近在相关答案here中发布了该代码 如果您必须处理XML节点中的非唯一项,here还需要更多。