如何在Django中使用本地sqlite数据库从sqlite迁移到postgres ?



我有一个'xxxxx.db' sqlite3数据库,我想将数据移动到PostgreSQL。我做了一些研究,看到了一些选择,但没有一个是有效的(PGloader等)。还有其他选择吗?我使用的是Windows,但Linux的解决方案也很受欢迎。

我试过在PowerShell(通过Jupyter Notebook):

!pip install virtualenvwrapper-win
!mkvirtualenv [name]
!pip install django
!django-admin startproject [name]
cd [name]
!python manage.py startapp app
!python manage.py inspectdb
!python manage.py inspectdb > models.py
!python manage.py migrate
!manage.py runserver
!python manage.py dumpdata > data.json

但是转储不包括来自我的数据库的数据,我也将设置更改为

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': absolute_path_to_db/db,
}
} 

提前感谢!

dumpdata命令[Django-doc]将转储激活的数据库的数据。由于您指向的是新的数据库,这意味着数据库(很可能)是空的,因此根本没有数据要转储。

您只需要激活虚拟环境并转储数据,因此使用旧的数据库作为settings.py中的活动数据库,您激活虚拟环境,并将数据转储到JSON文件中:

<>之前。virtualenv/bin/激活Python3 manage.pydumpdata

——all>数据。jsonwithvirtualenv虚拟环境所在目录的名称。

接下来在你的设置中,你可以重写它来使用(新的)PostgreSQL数据库,例如:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': '<db-name>',
'USER': '<db-user>',
'PASSWORD': '<db-password>',
'HOST': '<db-host>',
'PORT': '5432',
}
}

应该安装psycopg2然后,您可以使用loaddatadata.json加载数据。命令(Django-doc):

<>之前。virtualenv/bin/激活安装psycopg2Python3 management .pymigratePython3 management .pyloaddatadata.json

最新更新