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

用 VBA + ADO + MyODBC 將 SQL Server 7.0 資料遷移至 MySQL 完整實戰

     編輯:MySQL 資料庫相關知識

利用 Office 內建的 VBA 與 ADO 物件,配合 MyODBC 驅動,可在 Excel/Access 中直接編寫遷移腳本,無需額外工具,靈活可控。本文提供完整可執行代碼。

前置準備

  1. 安裝 MyODBC(官網下載)。
  2. ODBC 資料源管理員 → 新增「系統 DSN」 → 選 MySQL ODBC Driver → 設定 DSN 名稱(如 mysql1)、目標資料庫、帳密。
  3. Excel/VBA 編輯器中啟用參考:Microsoft ActiveX Data Objects x.x Library。

完整遷移代碼

Sub MigrateSQLServerToMySQL()
    Dim sConnect As String, sSql As String
    Dim cnMSSQL As New ADODB.Connection
    Dim cnMySQL As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim cm As New ADODB.Command

    ' 1. 連接 MySQL (via MyODBC DSN)
    sConnect = "DSN=mysql1"
    cnMySQL.Open sConnect

    ' 2. 連接 SQL Server 7.0 (OLE DB)
    sConnect = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=123456;Initial Catalog=softdown;Data Source=ntserver"
    cnMSSQL.Open sConnect

    ' 3. 讀取來源資料
    sSql = "SELECT * FROM softinfo ORDER BY softnum"
    rs.Open sSql, cnMSSQL, adOpenStatic, adLockReadOnly

    ' 4. 清空目標表(可選)
    cm.ActiveConnection = cnMySQL
    cm.CommandType = adCmdText
    cm.CommandText = "DELETE FROM softinfo"
    cm.Execute

    ' 5. 逐筆寫入 MySQL
    Do While Not rs.EOF
        sSql = "INSERT INTO softinfo VALUES (" & _
               Trim(rs(0).Value) & ", '" & _
               Trim(rs(1).Value) & "', '" & _
               Trim(rs(2).Value) & "', '" & _
               Trim(rs(3).Value) & "', '" & _
               Trim(rs(4).Value) & "', '" & _
               Trim(rs(5).Value) & "', " & _
               Trim(rs(6).Value) & ", " & _
               Trim(rs(7).Value) & ")"
        cm.CommandText = sSql
        cm.Execute
        rs.MoveNext
    Loop

    ' 6. 釋放資源
    rs.Close: Set rs = Nothing
    cnMySQL.Close: Set cnMySQL = Nothing
    cnMSSQL.Close: Set cnMSSQL = Nothing
End Sub

關鍵技術點

  • ADO 雙連線:一邊讀 SQL Server,一邊寫 MySQL,中間用 Recordset 暫存。
  • 參數化更安全:實務上建議用 cm.Parameters.Append 避免 SQL 注入與特殊字元轉義問題。
  • 批次優化:大量資料可改用 LOAD DATA INFILE 或關閉索引後批次 INSERT 再重建索引。
  • 資料型別對應:SQL Server image/text → MySQL BLOB/TEXT,datetime 格式通常相容。

擴充應用

同樣原理可用於:

  • Excel 報表自動從 MySQL 抓資料刷新。
  • Access 應用遷移至 MySQL 後台。
  • 異構資料庫同步(配合 Linked Server 或 SSIS 更強)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved