Sqlite数据库导入到MySQL中

导出Sqlite数据库

  1. 下载sqlite3命令行工具,进入命令行
  2. 切换目录到数据库文件所在目录【把数据库文件拷贝到sqlite3目录下则跳过这步】
    注意:在Windows下,目录是用\,在这里要输入两个\\,进行转义
  3. 打开数据库文件,设置导出的文件名,执行导出指令

    说明:如果只导出某个表,可以执行.dump table_name指令,否则就是导出整个数据库
  4. 得到的文件就是OrgServer.sql

对导入的sql文件进行整理

  1. 删除开头如下两行,MySQL不支持这两行代码
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
  1. 删除最后几个sqlite系统表的相关语句,这几个表是sqlite用来保存我们数据库的一些参数的,和数据库本身无关
ANALYZE sqlite_master;//以下到最后的所有语句
  1. 修改MySQL不兼容的语法
    我遇到的有:
  • sqlite的autoincrement修改为MySQL的auto_increment
  • 某些列名是MySQL的保留字(如用户描述列describe,用户是否重复登录列repeat),需要修改
  • sqlite的整数设定长度后并不是固定的,如果长度超过设定值,会自动进行扩展;但是MySQL中整数设定长度后就是固定长度。报错如下:
ERROR 1406 (22001) at line 7229: Data too long for column 'videoIndex' at row 1
  • MySQL为了显示中文一般会配置为utf8字符集,但是sqlite导出的sql文件默认是系统字符集,所以需要把sql文件另存为utf8。报错如下:
ERROR 1366 (HY000) at line 27: Incorrect string value: '\xBA\xA3\xBF\xB5RT...' for column 'type' at row 1
  • sqlite的varchar长度可以很大,比如65535;但是MySQL中最长21845,需要改为BLOB或TEXT类型。报错如下:
ERROR 1074 (42000) at line 7834: Column length too big for column 'infos' (max = 21845); use BLOB or TEXT instead

补充:在修改MySQL的字符集是UTF8的时候,我很自然的输入了utf-8,结果重启MySQL服务报错,如下:

C:\Users\Administrator>"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" MySQL80 --console

mysqld: Character set 'UTF-8' is not a compiled character set and is not specified in the 'C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\Index.xml' fil
e
2019-07-23T05:55:35.604384Z 0 [Warning] [MY-011071] [Server] option 'read_buffer_size': unsigned value 0 adjusted to 8192
2019-07-23T05:55:35.604384Z 0 [Warning] [MY-011071] [Server] option 'read_rnd_buffer_size': unsigned value 0 adjusted to 1
2019-07-23T05:55:35.604384Z 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with st
rict mode. They will be merged with strict mode in a future release.
2019-07-23T05:55:35.607384Z 0 [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.12) starting as process 11628
2019-07-23T05:55:35.631386Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-07-23T05:55:35.633386Z 0 [System] [MY-010910] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld 8.0.12)  MySQL Com
munity Server - GPL.

按提示找到Index.xml文件一看,是UTF8,改了以后成功启动服务。

导入数据

对SQL文件整理完后,按照日常导入MySQL即可。

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值