SQLite 到 MySQL 的数据库导入流程

手头有一个小项目,线上是 SQLite 数据库,本地开发环境为了管理方便用的是 MySQL 数据库。有时为了验证线上的一些数据问题,想要把线上的数据同步到本地来,而后导入到 MySQL 中。原本觉得很简单的事情,实际仍是花了些时间。mysql

完整的过程主要分三步:sql

1. 下载线上的 SQLite 数据库到本地,并导出为 SQL 文件

这一步很简单,用 scp 命令能够解决文件的下载。导出成 SQL 文件也只须要使用下面的命令:数据库

sqlite3 database.sqlite .dump > sqlite_dump.sql

database.sqlite 是下载的 SQLite 数据库名称,sqlite_dump.sql 就是导出后的 SQL 格式数据文件。code

2. 转换 SQL 文件内容

SQLite 导出的 SQL 文件是没法直接在 MySQL 中使用的,须要对一些差别的语法进行转换。主要的差别点以下:sqlite

  • SQLite 有一些语句是 MySQL 不支持的,好比 BEGIN TRANSACTION, COMMIT, sqlite_sequence
  • SQLite 建表的一些语句和 MySQL 不兼容。好比 varchar not null,这种在 MySQL 中执行会报错。
  • SQLite 建立数据表用的是双引号: "",但 MySQL 用的是上引号: ``。
  • SQLite 的索引建立语句中,表名和字段都是使用的双引号,跟上面一条相似,须要换成上引号。
  • SQLite 使用 tf 表达布尔值, MySQL 用的是 10
  • SQLite 自增属性关键词是 AUTOINCREMENT, MySQL 是 AUTO_INCREMENT

转换这一步就是最耗时的了,网上搜了几个现成的转化代码,结果转换后都没法直接使用。只能本身一个一个的解决。索引

3. 导入 MySQL

经过第二步的转换后,就能够直接用 mysql 命令来导入 SQL 数据了。命令格式以下:开发

mysql -uroot -p123456 db_name < sqlite_dump.sql

db_name 就是要在 MySQL 中要导入的数据表名称。同步

相关文章
相关标签/搜索