excel数据命令导入mysql_如何将EXCEL数据导入MYSQL
VBA對MySql數據庫進行讀取和寫入操作時間:2009-10-06 09:18:47來源:網絡 作者:未知 點擊:178次
'以下代碼用于32位系統,Office 2003,環境,MySql版本5.1
'在使用前需要先安裝MySql的驅動,進行正確配置
'注意:必須給出正確的服務器名、數據庫名、表名、數據庫連接的用戶名、密碼
Option Explicit
Dim Cnn As ADODB.Con
'以下代碼用于32位系統,Office 2003,環境,MySql版本5.1
'在使用前需要先安裝MySql的驅動,進行正確配置
'注意:必須給出正確的服務器名、數據庫名、表名、數據庫連接的用戶名、密碼
Option Explicit
Dim Cnn As ADODB.Connection '定義ADO連接對象
Dim Records As ADODB.Recordset '定義ADO記錄集對象
'連接到數據庫
Function CnnOpen(ByVal ServerName As String, ByVal DBName As String, ByVal TblName As String, ByVal User As String, ByVal PWD As String) '服務器名或IP、數據庫名、登錄用戶、密碼
Dim CnnStr As String '定義連接字符串
Set Cnn = CreateObject("ADODB.Connection") '創建ADO連接對象
Cnn.CommandTimeout = 15 '設置超時時間
CnnStr = "DRIVER={MySql ODBC 5.1 Driver};SERVER=" & ServerName & ";Database=" & DBName & ";Uid=" & User & ";Pwd=" & PWD & ";Stmt=set names GBK" '
Cnn.ConnectionString = CnnStr
Cnn.Open
End Function
'關閉連接
Function CnnClose()
If Cnn.State = 1 Then
Cnn.Close
End If
End Function
'取得記錄集
Function GetRecordset(ByVal SqlStr As String)
Set Records = CreateObject("ADODB.recordset")
Records.CursorType = adOpenStatic '設置游標類型,否則無法獲得行數
Records.CursorLocation = adUseClient '設置游標屬性,否則無法獲得行數
'對于Connection對象的Execute方法產生的記錄集對象,一般是一個只讀并且只向前的記錄集
'如果需要對記錄集進行操作,譬如修改和增加,則需要用一個Recordset對象
'并正確設置好CursorType和LockType為適當類型,然后調用Open方法打開
Records.Open SqlStr, Cnn '使用這個語句,行數將返回-1,Set Records = Conn.Execute(SqlStr)
End Function
'寫入Excel表
Function InputSheet(ByVal SheetName As String)
Dim Columns, Rows As Integer
Dim i, j As Integer
Columns = Records.Fields.Count
Rows = Records.RecordCount
If Records.EOF = False And Records.BOF = False Then
For i = 0 To Rows - 1
For j = 0 To Columns - 1
Sheets(SheetName).Cells(i + 2, j + 1).Select
Sheets(SheetName).Cells(i + 2, j + 1) = Records.Fields.Item(j).Value
Next
Records.MoveNext
Next
End If
Sheets(SheetName).Cells(1, 1).Select
MsgBox "Output!", vbOKOnly, "MySql to Excel"
End Function
'把Excel寫入MySql中的數據庫
Function InsertToMySql(ByVal SheetName As String, ByVal TblName As String)
Dim SqlStr As String
Dim i, j As Integer
Dim Columns, Rows As Integer
Columns = VBAProject.func_public.GetTotalColumns(SheetName)
Rows = VBAProject.func_public.GetTotalRows(SheetName)
Set Records = CreateObject("ADODB.recordset")
'取得結果集并插入數據到數據庫
Set Records = CreateObject("ADODB.Recordset")
'以下語句提供了插入思路,我只是把單條記錄的插入方式改為循環,以把所有的記錄添加到表中
'rs.Open "insert? ?into? ?newtable??values('" & ActiveSheet.Cells(i, 1).Value & "'," & "'" & ActiveSheet.Cells(i, 2).Value & "')", cnn, 0
For i = 2 To Rows
SqlStr = "INSERT INTO " & TblName & " values('" & Sheets(SheetName).Cells(i, 1).Value & "'" '注意:" values('",字母“v”之前是有空格的!!!
For j = 2 To Columns
SqlStr = SqlStr & ",'" & Sheets(SheetName).Cells(i, j).Value & "'"
Next
SqlStr = SqlStr & ")"
Set Records = Cnn.Execute(SqlStr) 'rs.Open SqlStr, cnn, 0??不能用這條語句實現!!!
Next
MsgBox "Insert!", vbOKOnly, "Excel To MySql"
End Function
'清除對象
Function ClearObj()
Set Cnn = Nothing
Set Records = Nothing
End Function
'獲得數據表的字段名稱
'OpenSchema可以獲得數據庫的各種信息
Function InputColumns(ByVal SheetName As String)
CnnOpen "localhost", "mydb", "employees", "root", ""
Set Records = Cnn.OpenSchema(adSchemaColumns)
Dim i As Integer
i = 1
While Not Records.EOF
Sheets(SheetName).Cells(1, i) = Records!COLUMN_NAME
i = i + 1
Records.MoveNext
Wend
CnnClose
ClearObj
End Function
本篇文章來源于:開發學院 http://edu.codepub.com? ?原文鏈接:http://edu.codepub.com/2009/1006/16171.php
總結
以上是生活随笔為你收集整理的excel数据命令导入mysql_如何将EXCEL数据导入MYSQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AMD Threadripper 794
- 下一篇: node mysql安装目录_nodej