在Django数据库间移动大数据集
怎样才能把一个很大的数据集从一个Django数据库转移到另一个数据库呢?
我想在Django的层面上来做这个事情,而不是直接在数据库里操作。我知道的所有现有工具(比如dumpdata/loaddata、序列化类、django-extensions)都是在内存中运行的,所以它们处理不了很大的数据集。
2 个回答
3
我在使用几个应用和数据库时遇到了同样的问题,所以写了这个脚本。这个脚本是对django的dumpdata功能的改进,它可以分块导出数据,避免出现内存错误。
这个脚本可以在这里找到: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
4
我觉得这篇文章非常有用 - 轻松将Django从MySQL迁移到PostgreSQL。