Django迁移1100万行,需要将其分解

时间:2017-05-24 19:55:08

标签: python django postgresql django-migrations

我有一个我正在处理的表,它包含大约1100万行...我需要在此表上运行迁移但是由于Django试图将它全部存储在缓存中我用完ram或磁盘空间这是第一次突然停止。

我很想知道是否有人遇到过这个问题,并且已经提出了基本上" paginate"的解决方案。迁移可能一次变成10-20k行的块?

为了给出一些背景知识,我正在使用Django 1.10和Postgres 9.4,如果可能的话,我想保持这种自动化(我仍然认为它可以是)

由于 萨姆

1 个答案:

答案 0 :(得分:3)

问题来自Postgresql,它在添加新列(字段)时重写每一行。

您需要做的是以下列方式编写自己的数据迁移:

  1. 使用null=True添加新列。在这种情况下,数据不会 重写和迁移将很快完成。
  2. 迁移
  3. 添加默认值
  4. 再次迁移。
  5. 这基本上是一个关于如何处理在巨大的postgres数据库中添加新行的简单模式。