sqlite转换成MySQL迁移及一键sqlite转MySQL软件

😂 这篇文章最后更新于1929天前,您需要注意相关的内容是否还可用。

下列是我从网上搜集并做的一个整理,若有未提及地方请指出:

从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

          https://blog.csdn.net/duomoke/article/details/48246229

当然最后来个最简单sqlite转MySQL方法,可以使用sqliteToMysql软件一键转换,只需要选择原db地址及目标MySQL地址即可,下载链接如下(有内购 不过可以免费试用):

链接:https://pan.baidu.com/s/18mEN4JfHffseYf9N3GCeyA 

提取码:9vv9