我使用sqlite3开发了一个简单的django应用程序。事实上,我想使用sqlite3保持简单,但是,事情开始扩大(是的,我实际上开始使用sqlite3的应用程序!对我感到羞耻......)所以我想将我的所有数据迁移到postgresql数据库。
django或其他第三方是否提供此类功能,或者我应该为自己的愚蠢而受苦......
答案 0 :(得分:29)
首先,执行
manage.py dumpdata > out.json
然后更改您的数据库配置,迁移(或syncdb),最后
echo "delete from auth_permission; delete from django_content_type;" | python manage.py dbshell
(如果您的Django大于1.11,则需要使用
echo "delete from django_content_type;" | manage.py dbshell
)
然后加载JSON文件:
manage.py loaddata out.json
(截至2013年django_contenttype
已替换为django_content_type
)
答案 1 :(得分:3)
我正在努力做同样的事情,但我遇到的问题是解决依赖关系与ticket 16317基本相同。但对我来说足够......
对此进行故障排除导致我找到django-smuggler的链接,该链接允许您从管理界面创建转储和加载数据。
对于所需的任何数据传输或用作备份实用程序,它看起来很有希望。
答案 2 :(得分:0)
如果在加载数据时遇到错误,请首先像这样转储它:
python manage.py dumpdata --exclude auth.permission --exclude contenttypes > datadump.json
如此处所述:
答案 3 :(得分:0)
我遇到了同样的情况,由于关键约束错误,无法将数据加载到新的 postgresql 数据库中。对我有用的是将我的“默认”sqlite 数据库重命名为“sqlite”,将我的 postgresql 数据库连接添加为“默认”,像这样导出数据:
python manage.py dumpdata --database sqlite --natural-foreign --natural-primary > sqlite-dump.json
然后像这样将数据加载到新数据库中:
python manage.py loaddata sqlite-dump.json
(这是 Django 2.2。)