sqlite转换成MySQL迁移及一键sqlite转MySQL软件
下列是我从网上搜集并做的一个整理,若有未提及地方请指出:
从sqlite数据库导入到mysql数据库实例
从sqllite中导出数据文件库XX.sql的文件。导入到mysql数据库中。
键入命令: source /smb/works/mysql.sql
出现很多如下的错误:
You have an error in your SQL syntax; check the manual thatcorresponds to your MariaDB server version for the right syntax to use near XXXXXXXXX
原因是sqllite与mysql语句有很大的区别:左边为MYSQL、右边为SQLite
1、启动事务
Mysql 为start transaction
Sqlite 为 begin transaction
2、提交事务
Mysql 为commit
Sqlite 为commit transaction
因此需要移除所有的 [BEGIN TRANSACTION] [COMMIT] 以及 任何包含 [sqlite_sequence] 的(整)行
3 创建表
Mysql的库名、表名、列明等都不需要使用[ ]
sqlite 所有的名称都需要增加[ ]
4、数据类型
sqlite的数据类型mysql都支持。但是sqlite中定义了范围在mysql中导入会报错。只有varchar需要定义范围。
5、冲突解决
SQLite 的 ONCONFLICT子句不是独立的SQL命令。这是一条可以出现在许多其他SQL命令中的非标准的子句。在Mysql中不支持。
6、引号
将 ["] 改为 [`]
也可以移除全部的 ["] ,但是如果有一些函数名作为字段名(e.g. regexp)时将会遇到错误
需要注意一些默认为 ["] ,其作用不在字段上的,不应被替换而应当被保留
7、将所有 [autoincrement] 改为 [auto_increment]
8、将所有 ['f'] 改为 ['0'] 并将所有 ['t'] 改为 ['1']
或者['False']改为['0']及['True']改为['1']
9、text字段不能设置unipue,需改为varchar(255)
10、注意sqlite是不区分类型的,所以有些整形字段和text字段要修改配合mysql。
11、默认设为CURRENT_TIMESTAMP的字段类型一定为TIMESTAMP。另外还有其他可能不同的字段类型在导入sql报错时候可以百度解决
将修改完的sql文件保存,然后通过工具导入到mysql中即可。
参考原文:https://www.2cto.com/database/201604/501991.html
当然最后来个最简单sqlite转MySQL方法,可以使用sqliteToMysql软件一键转换,只需要选择原db地址及目标MySQL地址即可,下载链接如下(有内购 不过可以免费试用):
链接:https://pan.baidu.com/s/18mEN4JfHffseYf9N3GCeyA
提取码:9vv9
留言评论
暂无留言