如何使用django-tenant-schemas将数据从共享架构迁移到多租户架构?
我们有一个saas,最初没有使用django-tenant-schemas,而是共享数据库,共享模式方法。我们现在发现了django-tenant-schemas,并认为这是正确的方法。
现在的问题是如何将数据从单个public
架构迁移到独立租户架构。
django-tenant-schemas
文档说明如下:
注意:如果这是您第一次,您的数据库应为空 运行此命令。
在我现有的应用程序中,我是一个租户表,其他所有模型都有ForeignKey但所有内容都在公共模式中。我使用south
迁移。现在我需要将所有这些租户数据迁移到单独的模式。怎么做?
答案 0 :(得分:0)
这样做有一个窍门。首先,您应该了解psql dump和load命令。
步骤:
public
模式。使用pgsql
命令将其转储到pg_dump
文件中。让我们说database.pgsql
。temp_db
。tenant_xyz
。tenant_xyz
到tenant_xyz.pgsql
。tenant_xyz
模式转储加载到租户模式实现的数据库中,假设postgres
。postgres
数据库中可用。脚本如下:
psql -U postgres -c "DROP DATABASE IF EXISTS temp_db"
psql -U postgres -c "CREATE DATABASE temp_db"
psql -U postgres temp_db < database.pgsql
psql -U postgres -d temp_db -c "ALTER SCHEMA public RENAME TO teanat_xyz"
pg_dump -U postgres -d temp_db -n tenant_xyz > tenant_xyz.pgsql
psql -U postgres -c "DROP DATABASE temp_db"
psql -U postgres -c "DROP SCHEMA IF EXISTS tenant_xyz CASCADE"
psql -U postgres postgres < tenant_xyz.pgsql