Django 固定装置,加载大量数据

标签 django django-fixtures

所以我有两个 200mb JSON 文件。第一个需要 1.5 小时才能加载,第二个(与第一个建立一堆多对多关系模型)需要 24 小时以上(因为没有通过控制台进行更新,我不知道它是否仍在继续或者如果卡住了,所以我停止了)。

由于加载数据运行得不太好,我编写了自己的脚本来加载数据,同时还将最近保存到数据库中的内容输出,但我注意到脚本(以及我的计算机)的速度随着时间的推移而衰减它去。所以我必须停止脚本 -> 重新启动计算机 -> 从我停止的数据部分恢复,这比整个脚本运行要快。这是一个乏味的过程,因为我每 4 小时重新启动一次计算机,大约需要 18 小时才能完全加载所有数据。

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

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

最佳答案

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

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

  1. 在事务中加载数据。默认情况下,数据库可能处于自动提交模式,这会在每次插入后导致昂贵的提交。相反,请确保在插入任何内容之前开始事务,然后提交(但重要的是,不要忘记提交;没有什么比花费三个小时更糟糕的了)导入数据,却发现你忘了提交)。
  2. 绕过 Django ORM 并使用原始 INSERT 语句。 ORM 存在一些计算开销,绕过它会让事情变得更快。

关于Django 固定装置,加载大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19501063/

相关文章:

django 休息框架 : set field-level error from serializer validate() method

Django 模板 : Get current URL in another language

Django,通用关系,制作装置

Django 装置。加载初始数据进程被终止

django - Django CBV 的内置方法

python - 将文本文件中的 ascii 字符转换为 Unicode

python - 在django和python中上传文件?

Django manage.py 测试无法正确加载夹具

django - 如何从所有应用程序加载 Django 装置?

DJANGO 1.11 - 找不到固定装置