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 中要導入的數據表名稱。同步

相關文章
相關標籤/搜索