0

所以我试图获取大量的 xml 文件(没有一个特别大,我可以按照我认为合适的方式拆分它们。)总共有大约 70GB 的数据。为了便于参考,加载脚本是用 python 编写的,并使用 psycopg2 与 postgres 表交互。

无论如何,我想做的是处理像这样工作的数据。关系计数是两个标签一起被看到的次数,标签计数是标签被看到的次数。我已经拥有所有标签,它只是获得它们出现的时间以及它们一起出现的 xml 已经成为问题的时间。

         标签表 | 关系表              
TagID TagName TagCount | tag1 tag2 关系计数  
   1 狗 20 | 1 2 5  
   2 比格犬 10 | 1 3 2  
   3 鸟 11 | 2 3 7  

我遇到的问题是在合理的时间内加载数据。我一直在迭代更新方法,因为我计算了标签在 xml 文件中出现的频率。

我想我在问是否有人有任何想法。我应该创建某种缓冲区来保存更新信息并尝试定期使用 cur.executeall() 和/或我应该以某种方式重组数据库。无论如何,对这个问题的任何和所有想法都表示赞赏。

4

1 回答 1

3

如果我理解这个“......我一直在迭代更新方法”,听起来你正在更新数据库行吗?如果是这样,请考虑编写一些代码来传递 XML,累积您正在跟踪的总数,将它们输出到一个文件,然后使用 COPY 加载该文件。

如果您要更新现有数据,请尝试以下操作:

1) 传递 XML 文件以从新数据生成所有新总计

2) 将其复制到工作表中 - 在每批之前和之后清除的表

3) 对于所有找不到的行,从工作表向真实表发出 INSERT,为所有值插入零

4) 从工作表向真实表发出 UPDATE 以增加计数器。

5) 截断工作表。

于 2011-02-21T13:44:52.207 回答