2

所以我有两个 200mb JSON 文件。第一个需要 1.5 小时才能加载,第二个需要 24 多个小时(因为没有通过控制台更新,我不知道它是否还在继续,或者如果它冻结了,所以我停止了它)。

由于 loaddata 不能很好地工作,我编写了自己的脚本来加载数据,同时还将最近保存的内容输出到数据库中,但我注意到脚本(连同我的计算机)的速度越长,它的速度就越慢。所以我不得不停止脚本 -> 重新启动我的计算机 -> 在我停止的数据部分恢复,这比在整个过程中运行脚本要快。这是一个乏味的过程,因为我每 4 小时重新启动计算机大约需要 18 小时才能完全加载所有数据。

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

编辑:我意识到有一个加载原始 SQL 的选项,所以我可以尝试一下,尽管我需要复习我的 SQL。

4

1 回答 1

4

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

但是,当您编写自己的脚本时,有两件事会大大加快速度:

  1. 在事务中加载数据。默认情况下,数据库可能处于自动提交模式,这会在每次插入后导致昂贵的提交。相反,请确保begin在插入任何内容之前先进行事务处理,然后再进行事务处理commit(但重要的是,不要忘记提交;没有什么比花三个小时导入数据更糟糕的是,才意识到您忘记提交它)。
  2. 绕过 Django ORM 并使用原始INSERT语句。ORM 有一些计算开销,绕过它会使事情变得更快。
于 2013-10-21T17:47:38.423 回答