我有来自旧数据库的初始数据,大约需要6GB。我可以“dumpdata”我的旧数据库没有任何问题。但是当我尝试将它们恢复到新数据库时,我得到了MemoryError
:
python manage.py loaddata fixtures/initial_data.json
MemoryError: Problem installing fixture 'fixtures/initial_data.json':
有没有办法让loaddata
使用块或者是否可以加载那个大文件?
答案 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"。