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

利用 VBA + ADO 實現 SQL Server 7.0 到 MySQL 的資料遷移

     編輯:MySQL 資料庫相關知識

Office 系列僅被開發 20% 功能,VBA 結合 ADO 物件可輕鬆實現跨資料庫資料遷移。本文示範透過 MyODBC 連接 MySQL,將 SQL Server 7.0 softinfo 表資料逐筆轉入 MySQL。

前置準備

  1. 安裝 MyODBC(免費,mysql.org 下載)。
  2. ODBC 資料源管理員建立系統 DSN(如 mysql1),指向目標 MySQL 資料庫。

核心 VBA 代碼

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

  ' 連接 MySQL
  sConnect = "dsn=mysql1"
  cnMySQL.Open sConnect

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

  ' 查詢來源資料
  sSql = "SELECT * FROM softinfo ORDER BY softnum"
  rs.Open sSql, cnMSSQL, 1, 1

  ' 逐筆寫入 MySQL
  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.ActiveConnection = cnMySQL
    cm.CommandType = adCmdText
    cm.CommandText = sSql
    cm.Execute

    rs.MoveNext
  Wend

  ' 清理物件
  rs.Close: Set rs = Nothing
  cnMySQL.Close: Set cnMySQL = Nothing
  cnMSSQL.Close: Set cnMSSQL = Nothing
End Sub

應用價值

宏寫好後,使用者只需點一下按鈕即可生成報表、同步資料。站在 Microsoft 巨人肩膀上,利用 Excel 進行二次開發,效率遠超自建報表系統。VBA 不只是病毒溫床,更是辦公自動化的利器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved