我有来自旧数据库的初始数据,大约需要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"。