基本思路:sqlite导出sql保存到mysql
1,sqlite导出sql,手工替换
2,sqlite导出sql,脚本替换
3,makemigrations生成mysql表,数据:sqlite=>csv=>mysql
4,django主从数据库机制,将sqlite同步到mysql
sqlite导出sql
1 | sqlite3 database.sqlite3 |
or
1 | sqlite3 database.sqlite3 .dump |
01,sqlite=>mysql语句修改
为了保证SQL语句的兼容,需要将SQLite的特有的格式,修改为MySQL的格式。下面为我总结的一般规则(下面的方括号应被忽略):
1 | 将 ["] 改为 [`] |
将修改完的文件保存。
放弃,太麻烦且容易错,无法复用。
02,sqlite转mysql格式脚本
01,https://github.com/vwbusguy/sqlite-to-mysql
02,(包含2不同脚本)Quick easy way to migrate SQLite3 to MySQL? [closed]:https://stackoverflow.com/questions/18671/quick-easy-way-to-migrate-sqlite3-to-mysql
以上脚本收集整合到githubsqlite-to-mysql
可惜的是没有一个可以直接使用的,简单的表可以搞定,一旦涉及复杂的字段,比如datetime等,就会踩坑。
放弃!
03,makemigrations方案
django makemigrations生成mysql表,数据:sqlite=>csv=>mysql
前半部分可以:makemigrations在mysql创建新表
后半部分不行:csv数据sqlite导出导入mysql,失败。django支持利用json导出导入数据,也失败。
Django2 SQLite3迁移到MySQL数据库:https://www.jianshu.com/p/6b28f7dbc1fa
django sqlite数据库导出迁移到mysql数据库方法:https://blog.csdn.net/YPL_ZML/article/details/91892306
04,django主从数据库机制
主要参考:
django sqlite3迁移到mysql:www.voidcn.com/article/p-hesvaooz-ru.html
数据表创建成功,但迁移数据时失败。
思路上查询出对象在保存到从数据库是没问题的,实际上由于数据存在主键依赖,导致创建表或记录的前后次序有特定要求,自动查询的化未必符合这种要求。
另一个问题就是这种方案会对django的默认数据表也进行迁移,也会产生主键依赖问题。
总结
没找到合适方案可以简单快速的迁移,最后采用03方法,django在mysql生成新表。由于目前测试数据并不多,所以数据由各个模块开发人员自行初始化。
参考
将sqlite3中数据导入到mysql中的实战教程:https://www.jb51.net/article/118379.htm
sqlite导入到mysql:https://www.cnblogs.com/goldenstones/articles/9185950.html
数据库系列
数据库01mysql常用操作速查
数据库02mongodb异常错误
数据库03mongodb占用磁盘空间过大
数据库04sqlite转mysql
数据库05redis常用命令整理
数据库06redis事务
数据库07redis分布式锁
数据库08redis其他
数据库09mysql常用查询实例
数据库10mysql之坑
数据库11mysql之坑null专题
数据库12经验之谈
数据库13mysql执行计划
数据库14mysql的redolog与binlog
数据库15mysql报错2006
数据库16mysql之初始密码
数据库17mysql锁机制
数据库18mysql事务和MVCC