需將 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 單一執行檔
連線字串格式
| 資料庫 | 連線字串範例 |
| MySQL | MySql:: 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 |
操作步驟
- 啟動
CYQ.DBImport.exe。
- From (來源):選擇 MySQL,貼上來源連線字串,點「測試連線」。
- To (目標):選擇 SQLite,貼上目標連線字串 (若檔案不存在勾選
FailIfMissing=False 自動建立),點「測試連線」。
- 選擇物件:勾選要遷移的資料表、檢視表、資料 (可全選)。
- 選項:
- 建立表結構 (Create Table)
- 複製資料 (Copy Data)
- 批次大小 (Batch Size):建議 1000-5000
- 交易模式 (Transaction):每批提交
- 點擊「開始遷移」,查看進度列與日誌輸出。
- 完成後,用
DB Browser for SQLite 或 sqlite3 CLI 驗證資料筆數、結構。sqlite3 target.db ".tables"
sqlite3 target.db "SELECT COUNT(*) FROM users;"
常見問題與對策
| 問題 | 原因 | 解決 |
| 自增主鍵衝突 | 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 |
| 編碼亂碼 | 連線字串未指定 charset | MySQL 連線字串加 ;charset=utf8mb4 |
替代方案 (無 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萬行)、無工具安裝權限、臨時需求。
- 上一篇文章: SQL Server 快速檢測 Service Pack 版本與補丁安裝狀態
- 下一篇文章: 解決 MySQL 遠程連線緩慢:skip-name-resolve 禁用 DNS 反解
Copyright ©
程式碼之家 All Rights Reserved