2013-10-21 42 views
1

所以我有两个200MB的JSON文件。第一个需要1.5小时才能加载,第二个需要24小时以上(因为没有通过控制台进行更新,所以我不知道它是什么)。还在继续或者如果它冻结了,所以我就停止了它)。Django灯具,加载大量数据

由于loaddata不能很好地工作,我编写了自己的脚本来加载数据,同时也输出最近保存到db中的数据,但是我注意到脚本的速度(和我的计算机一起)时间更长了。所以我不得不停止脚本 - >重新启动计算机 - >在我离开的数据部分恢复,这比在整个脚本中运行脚本要快。这是一个繁琐的过程,因为我花了大约18个小时,每隔4个小时重新启动一次计算机,以使所有数据完全加载。

我想知道是否有更好的解决方案来加载大量的数据?

编辑:我意识到有一个选项加载原始SQL,所以我可以尝试,虽然我需要刷上我的SQL。

回答

3

当您加载大量数据时,编写自己的自定义脚本通常是最快的。一旦你装入了一次,你可以使用你的数据库导入/导出选项,这通常是非常快的(例如,pgdump)。

当你编写自己的脚本,不过,两件事情,这将极大地速度事情:

  1. 在一个事务中加载数据。默认情况下,数据库可能处于自动提交模式,这会在每次插入后导致昂贵的提交。相反,确保你在插入任何东西之前进行了事务处理,然后在commit之后(重要的是,不要忘记提交;无需花费三个小时导入数据,只是意识到你忘了提交它)。
  2. 绕过Django ORM并使用原始INSERT语句。 ORM有一些计算开销,绕过它会使事情变得更快。
+2

那么,我已经尝试加载数据与手动提交和交易,它仍然相当缓慢。猜猜我将不得不去原始的SQL路线。 – dl8