首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 資料遷移至 SQLite 工具:CYQ.DBImport 使用指南

     編輯:MySQL 資料庫相關知識

需將 MySQL 資料匯入 SQLite (嵌入式應用、離線分析、測試環境),但 mysqldump 輸出含 MySQL 專屬語法 (如 ENGINE=InnoDB、AUTO_INCREMENT、BACKTICK 引號) 無法直接在 SQLite 執行。**CYQ.DBImport** 是輕量級 GUI 工具,支援異構資料庫間資料搬移,自動處理類型映射、關鍵字轉義、批次提交。

工具資訊

  • 名稱:CYQ.DBImport (屬 CYQ.Data 元件套件)
  • 下載:官方下載頁
  • 支援來源:MySQL、SQL Server、Oracle、PostgreSQL、Access、Excel、CSV 等
  • 支援目標:SQLite、MySQL、SQL Server、Oracle、PostgreSQL 等
  • 架構:.NET Framework 4.x,Windows 單一執行檔

連線字串格式

資料庫連線字串範例
MySQLMySql:: host=localhost;port=3306;database=my_db;uid=root;pwd=123456;charset=utf8mb4
SQLite (檔案)Sqlite:: Data Source=D:\Data\target.db;Version=3;FailIfMissing=False
SQLite (記憶體)Sqlite:: Data Source=:memory:;Version=3

操作步驟

  1. 啟動 CYQ.DBImport.exe。
  2. From (來源):選擇 MySQL,貼上來源連線字串,點「測試連線」。
  3. To (目標):選擇 SQLite,貼上目標連線字串 (若檔案不存在勾選 FailIfMissing=False 自動建立),點「測試連線」。
  4. 選擇物件:勾選要遷移的資料表、檢視表、資料 (可全選)。
  5. 選項:
    • 建立表結構 (Create Table)
    • 複製資料 (Copy Data)
    • 批次大小 (Batch Size):建議 1000-5000
    • 交易模式 (Transaction):每批提交
  6. 點擊「開始遷移」,查看進度列與日誌輸出。
  7. 完成後,用 DB Browser for SQLite 或 sqlite3 CLI 驗證資料筆數、結構。
    sqlite3 target.db ".tables"
    sqlite3 target.db "SELECT COUNT(*) FROM users;"

常見問題與對策

替代方案 (無 GUI 環境/自動化)

# 1. mysqldump 導出純資料 (INSERT 語句),再手工修正語法
mysqldump -u root -p --no-create-info --skip-extended-insert --default-character-set=utf8mb4 \
  --compatible=ansi my_db > data.sql
# 手工移除 backtick、ENGINE=...、AUTO_INCREMENT 等

# 2. Python 腳本 (sqlalchemy + pandas) 程式化遷移
# 適合複雜轉換、定時同步、CI/CD 整合

適用場景建議

  • CYQ.DBImport:一次性遷移、中小資料量 (<100萬行)、Windows 環境、需 GUI 確認。
  • Python/ETL 工具:定時同步、大資料量、Linux 伺服器、需資料清洗轉換。
  • mysqldump + 手工修正:極小資料量 (<1萬行)、無工具安裝權限、臨時需求。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
問題原因解決
自增主鍵衝突SQLite 自增行為不同目標表重建主鍵為 INTEGER PRIMARY KEY AUTOINCREMENT,或遷移前清空目標表
DATETIME 格式錯誤MySQL DATETIME vs SQLite TEXT (ISO8601)工具自動轉換,若失敗可在 MySQL 端 SELECT DATE_FORMAT(dt, '%Y-%m-%d %H:%i:%S') 導出
BLOB 欄位截斷批次大小過大超過 SQLite 參數限制減小 Batch Size 至 100,或分表遷移
外鍵約束失敗遷移順序錯誤 (父表後於子表)先遷移主表,再遷移從表;或暫時關閉 PRAGMA foreign_keys=OFF
編碼亂碼連線字串未指定 charsetMySQL 連線字串加 ;charset=utf8mb4