5

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

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

有什么方法可以loaddata使用块,或者是否可以加载那个大文件?

4

2 回答 2

8

我已经编写了这个脚本,它是 django 的转储数据的一个分支,但是以块的形式转储数据以避免 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。

于 2014-01-31T06:04:12.500 回答
1

对于大型数据库,使用备份工具转储数据库数据,而不是“django dumpdata”。要加载数据库数据,请使用恢复工具而不是“django loaddata”。

于 2013-08-31T20:55:08.547 回答