Django迁移1100万行,需要分解

Django migration 11 million rows, need to break it down

我有一个正在处理的 table,它包含大约 1100 万行...我需要 运行 对此 table 进行迁移,但由于 Django 尝试将其全部存储在缓存中 I 运行 out of ram or disk space which ever comes first and it comes abrupt halt.

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

只是为了提供一些背景知识,我正在使用 Django 1.10 和 Postgres 9.4,我希望尽可能保持自动化(我仍然认为可以)

谢谢 山姆

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

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

  1. 使用 null=True 添加一个新列。在这种情况下,数据不会 重写和迁移将很快完成。
  2. 迁移它
  3. 添加默认值
  4. 再次迁移。

这基本上是一个关于如何在庞大的 postgres 数据库中添加新行的简单模式。