加载大量初始数据时出现MemoryError



我有来自旧数据库的初始数据,大约需要6GB。我可以毫无问题地"转储"我的旧数据库。但当我试图将它们恢复到新数据库时,我得到了MemoryError:

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

有没有什么方法可以让loaddata与块一起工作,或者有可能加载那个大文件?

我已经编写了这个脚本,它是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。

对于大型数据库,请使用备份工具来转储数据库数据,而不是"django-dumpdata"。要加载数据库数据,请使用还原工具,而不是"django-loaddata"。

相关内容

最新更新