修訂問題...請參閱下面通過VBA從Excel數據添加到MySQL
我有訪問MySQL數據庫作爲後端的Excel工作表....
我插入新的記錄MySql採用以下方式,但我不確定這是否是最好的方法。
For rowline = 1 To 50
strSQL = myquerystring (INSERT 5 columns per excel row)
rs.Open strSQL, oConn, adOpenDynamic, adLockOptimistic
Next rowline
基本上查詢字符串經過在Excel工作表(從1到50),每行和對某些單元中的數據被添加到SQL查詢,然後用rs.Open插入.... (每行有5列作爲記錄插入)
一切運行良好,但我只想知道是否有更快的方法(只需一個INSERT查詢),插入所有50(和5列),從第1行到第50行,全部一次。
目前它正在做50個單獨的INSERT查詢,所以我試圖將其減少到1,但我不知道它是否可能。
新信息:
你好,按照你的建議和鏈接,一些谷歌搜索,我結束了下面的代碼... 它工作正常,但是到INSERT 100行需要(謝謝!)大約15秒....這太多了。 我希望我能得到一些關於如何執行一次查詢的代碼/想法,(在一次打擊中插入所有100行)。 請注意,我是一個初學者,所以如果你可以將我引入一些樣本應該如何完成它將非常感激。
Public Sub INSERT_to_MySQL()
Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
Dim strSQL As String
app_enable_false
On Error GoTo no_DB_connection_error
resume_after_connecting:
Set cmd = New ADODB.Command
cmd.ActiveConnection = oConn
' LOOP and INSERT the data
' 100 rows take approx 15 seconds to INSERT
For rowcursor= 1 To 100
the_table = "`global`.`filesaved` "
strSQL = "INSERT INTO " & the_table & " (Client_Name, OriginCity, DestinationCity, ValidFrom, ValidTo, Quote_Number, Cost1, Cost2, Cost3) "
strSQL = strSQL & " VALUES ('" & esc(Range("BB" & rowcursor)) & "','" & esc(Range("BC" & rowcursor)) & "','" & esc(Range("BD" & rowcursor)) & "','" & Format(Range("BE" & rowcursor), "yyyy-mm-dd") & "','" & Format(Range("BF" & rowcursor), "yyyy-mm-dd")
strSQL = strSQL & "','" & esc(Range("BH" & rowcursor)) & "','" & esc(Range("BJ" & rowcursor)) & "','" & esc(Range("BK" & rowcursor)) & "','" & esc(Range("BJ" & rowcursor)) & "')"
cmd.CommandText = strSQL
cmd.Execute
Next rowcursor
app_enable_true
Exit Sub
no_DB_connection_error:
ConnectDB
GoTo resume_after_connecting
End Sub
可能的興趣:http:// stackoverflow。com/questions/2821718/excel-vba-writing-to-mysql-database/2821911#2821911 – Fionnuala 2010-06-23 18:36:52
感謝Remou/all for yor input。 我顯然走錯了路,有很多東西要學。 – griseldas 2010-06-24 02:24:56