【问题标题】:Django fixtures, loading in large amounts of dataDjango 固定装置,加载大量数据
【发布时间】:2013-10-21 17:33:39
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: django django-fixtures


    【解决方案1】:

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

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

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

    【讨论】:

    • 好吧,我已经尝试通过手动提交和事务加载数据,但速度仍然很慢。我想我将不得不走原始的 sql 路线。
    猜你喜欢
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 2013-11-06
    • 2011-01-29
    相关资源
    最近更新 更多