使用Python和MySQL进行中间查找的大量数据插入

时间:2015-02-18 08:42:03

标签: python mysql json database

我有一个大小为G的文件,每行包含一个JSON哈希。文档本身是一个有效的JSON文档,但我无法控制这些数据的生成,所以我无法更改它。

需要读取JSON,需要在某些"字段上执行查找。在JSON中,然后需要将这些查找的结果插入到MySQL数据库中。

目前,处理此文件需要花费数小时,我认为这是因为我在每行插入和提交而不是使用executemany,但是我很难弄清楚如何最好地处理这个问题因为我需要将查找作为流程的一部分,然后插入到多个表中。

该过程实际如下:

1)迭代文件,随时读取每一行

2)对于每一行,如果需要将其插入数据库,请确定

3)如果需要将该行插入数据库,请查找各种JSON字段的外键并将其替换为FK id

4)插入" new"进入数据库。

问题出现在(3),因为在某些情况下,通过插入数据子集来创建 的FK id。

简而言之,我需要对嵌套数据结构进行大量插入,嵌套数据的各个部分需要插入到不同的表中,同时保持参照完整性。

感谢所有人和任何帮助,

马特

1 个答案:

答案 0 :(得分:1)

  • 1)过滤掉你可以忽略的行。
  • 2)计算表依赖关系图并按表将行分区为多个文件。
  • 3)插入没有依赖关系的表的所有行;可选地,缓存这些,这样您就不必向DB询问您刚刚告诉它的查找内容。
  • N)使用该缓存+执行任何数据库查找,以插入依赖于在步骤N-1中插入的​​行的行。

将所有这些作为多个流程执行,以便您可以验证每个阶段。使用批量插入并考虑禁用FK验证。