手頭有一個小項目,線上是 SQLite 數據庫,本地開發環境爲了管理方便用的是 MySQL 數據庫。有時爲了驗證線上的一些數據問題,想要把線上的數據同步到本地來,而後導入到 MySQL 中。原本覺得很簡單的事情,實際仍是花了些時間。mysql
完整的過程主要分三步:sql
這一步很簡單,用 scp
命令能夠解決文件的下載。導出成 SQL 文件也只須要使用下面的命令:數據庫
sqlite3 database.sqlite .dump > sqlite_dump.sql
database.sqlite
是下載的 SQLite 數據庫名稱,sqlite_dump.sql
就是導出後的 SQL 格式數據文件。code
SQLite 導出的 SQL 文件是沒法直接在 MySQL 中使用的,須要對一些差別的語法進行轉換。主要的差別點以下:sqlite
BEGIN TRANSACTION
, COMMIT
, sqlite_sequence
。varchar not null
,這種在 MySQL 中執行會報錯。""
,但 MySQL 用的是上引號: `
`。t
和 f
表達布爾值, MySQL 用的是 1
和 0
。AUTOINCREMENT
, MySQL 是 AUTO_INCREMENT
。轉換這一步就是最耗時的了,網上搜了幾個現成的轉化代碼,結果轉換後都沒法直接使用。只能本身一個一個的解決。索引
經過第二步的轉換後,就能夠直接用 mysql
命令來導入 SQL 數據了。命令格式以下:開發
mysql -uroot -p123456 db_name < sqlite_dump.sql
db_name
就是要在 MySQL 中要導入的數據表名稱。同步