SQLite 如何导出.sqlite的数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLite 如何导出.sqlite的数据库相关的知识,希望对你有一定的参考价值。

使用 Firefox 浏览器中的SQLite Manager工具创建了一个sqlite数据库, 如何才能够导出 .sqlite 类型的数据库

参考技术A sqlite数据库是单个文件,直接复制这个文件就可以保存了。追问

直接复制是可以,但是我想知道下怎么导出来

追答

使用第三方工具软件,例如SQLiteManager

参考技术B sqlite 不是.db吗,如果是sqlite3.exe只要cmd sqlite3 数据库名,存在则打开,不存在则创建追问

我是使用SQLite Manager工具创建的,就是想从这个工具中导出到指定目录下面

参考技术C sqlite数据库创建的是.db文件,有很多软件可以打开这个文件,比如SQLite Expert

Django如何把SQLite存储的数据迁移至Mysql数据库中

之前我们默认使用的是SQLite数据库,我们开发完成之后,里面有许多数据。如果我们想转换成Mysql数据库,那我们先得把旧数据从SQLite导出,然后再导入到新的Mysql数据库里去。

1、SQLite导出数据

导出之前,我们先确保settins.py数据库配置选项那里,还是使用的是SQLite配置,如果已经修改了,请先修改回来:

DATABASES = {
    \'default\': {
        \'ENGINE\': \'django.db.backends.sqlite3\',
        \'NAME\': os.path.join(BASE_DIR, \'db.sqlite3\'),
    }
}

然后在cmd命令行或pycharm的命令终端中输入:

python manage.py dumpdata > data.json

这样就将数据导出到Django项目根目录下的data.json文件。

2、MySQL导入数据
同样,先将Django的数据库配置改为MySQL并把之前的配置注释掉:

DATABASES = {
    \'default\': {
        \'ENGINE\': \'django.db.backends.mysql\',
        \'NAME\': \'你的数据库名\',
        \'USER\': \'你的MySQL用户名\',
        \'PASSWORD\': \'你的密码\',
        \'HOST\': \'localhost\',
        \'PORT\': \'3306\',
    }
}

并在项目配置目录下的__init__.py文件中加入
import pymysql
pymysql.install_as_MySQLdb()

3.执行数据库迁移

更改完配置后,执行数据库迁移操作命令,同步生成相应的表结构

python manage.py makemigrations
python manage.py migrate

然后在cmd命令行或pycharm的命令终端中输入(这一步是把导出的数据同步到mysql数据库中):

python manage.py loaddata data.json

注意:

确保Mysql用户表里为空的,如果之前有迁移过数据到Mysql,有可能会出错。注意出错的时候所报的错误信息。如果提示有重复主键,那需要先删掉数据。这些数据是在给MySQL数据库应用迁移文件的时候产生的,一般是content_type相关的表。

进入到MySQL,执行如下的SQL语句:

use 你的数据库名;
delete from auth_permission;
delete from django_content_type;

删除数据之后,再执行一次导入命令即可。基本上,导入不了数据都是MySQL存在数据导致的

ps:最后在迁移的过程中可能会出现编码的问题,当报错时,点进错误提示,我遇到的只是把decode改为encode。

以上是关于SQLite 如何导出.sqlite的数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sqlite3.exe 从导出的 .sql 脚本创建数据库

导出时 SQLite 和 sqlite-jdbc 不起作用

Django如何把SQLite数据库转换为Mysql数据库

如何将 sqlite 数据库 表 的 数据 导出 成txt文件?

Django如何把SQLite存储的数据迁移至Mysql数据库中

sqlite expert personal 如何导出数据库??(自己已经创建好数据库,和已经插入