加载巨大的初始数据时出现MemoryError

时间:2013-08-31 20:25:16

标签: database django memory data-migration

我有来自旧数据库的初始数据,大约需要6GB。我可以“dumpdata”我的旧数据库没有任何问题。但是当我尝试将它们恢复到新数据库时,我得到了MemoryError

    python manage.py loaddata fixtures/initial_data.json
    MemoryError: Problem installing fixture 'fixtures/initial_data.json': 

有没有办法让loaddata使用块或者是否可以加载那个大文件?

2 个答案:

答案 0 :(得分:7)

我编写了这个脚本,它是django的dumpdata的一个分支,但是以块的形式转储数据以避免MemoryError。然后逐个加载这些块。

脚本位于https://github.com/fastinetserver/django-dumpdata-chunks

使用示例:

1)将数据转储到许多文件中:

mkdir some-folder

./manage.py dumpdata_chunks your-app-name
--output-folder=./some-folder --max-records-per-chunk=100000

2)从文件夹加载数据:

find ./some-folder | egrep -o "([0-9]+_[0-9]+)" | xargs ./manage.py loaddata

PS。我用它将数据从Postgresql移动到MySQL。

答案 1 :(得分:1)

对于大型数据库,使用备份工具来转储数据库数据" django dumpdata"。 要加载数据库数据,请使用恢复工具" django loaddata"。