2012-03-01 47 views
1

我有一个红宝石哈希16000项。 (作为XML下载并转换为哈希) 我需要将这些推入数据库。 每周一次,其中一些更改,但我不知道哪些。插入或更新postgresql en mass

我见过的建议什么是正确的去SQL,因为活动记录是(在该网站)上只是一个直插慢70倍..甚至没有思考的更新/插入

我m想知道什么方法是最好的.. 有没有人收到一个巨大的(或很小)的数据块,他们不得不重复插入/更新?
你能提供建议吗?

回答

1

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

我最近在相关的答案here上发布了相应的代码。
如果您不得不处理XML节点中的非唯一项目,则需要更多here

2

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

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

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

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