Django:将数据从一个数据库复制到另一个数据库

Joh*_*ash 4 sql database sqlite django django-models

我有两个sqlite.db文件.我想将db文件表中一列的内容复制到另一列.

例如:

我在db文件中有名为new.db的模型信息:

class Information(models.Model):
        info_id = models.AutoField(primary_key = True)
        info_name = models.CharField( max_length = 50)
Run Code Online (Sandbox Code Playgroud)

以及名为old.db的db文件中的以下信息模型:

class Information(models.Model):
            info_id = models.AutoField(primary_key = True)
            info_type = models.CharField(max_length = 50)
            info_name = models.CharField( max_length = 50)
Run Code Online (Sandbox Code Playgroud)

我想将old.db列中的info_id和info_name中的所有数据复制到new.db中的info_id和info_name.

我想的是:

manage.py dbshell
Run Code Online (Sandbox Code Playgroud)

然后

INSERT INTO "new.Information" ("info_id", "info_name")
SELECT "info_id", "info_name"
FROM "old.Information";
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用.它说new.Information表不存在......任何想法?

Ale*_*dal 6

您需要将设置文件中的数据库URL切换到db2并运行syncdb以创建新表.之后,最简单的做法就是切换回db1并运行./manage.py dumpdata myapp > data.json,然后再转到db2,然后运行./manage.py loaddata data.json.

之后,您可以从db2中删除不需要的数据.

编辑:另一种方法是使用ATTACHsqlite中的函数.首先,我建议您执行上面的第一步(更改数据库设置并使用syncdb创建表),然后您可以切换回来执行此操作:

./manage.py dbshell

> ATTACH DATABASE 'new.db' AS newdb;
> INSERT INTO newdb.Information SELECT * FROM Information;
Run Code Online (Sandbox Code Playgroud)