ОБНОВЛЕННЫЙ ВОПРОС ... СМ. НИЖЕ
У меня есть лист Excel, который обращается к базе данных MySQL в качестве бэкэнда ....
Я вставляю новые записи в 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, но не знаю, возможно ли это.
НОВАЯ ИНФОРМАЦИЯ:
Привет, следуя вашим советам и ссылкам (спасибо!) И некоторому поиску в Google, я получил следующий код ...
Он работает нормально, ОДНАКО для вставки 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