QUESTION MISE À JOUR ... VOIR CI-DESSOUSAjout de données à partir d'Excel à Mysql via VBA
J'ai une feuille Excel qui accède à un DB MySQL en tant que back-end ....
-je insérer de nouveaux enregistrements dans MySql la façon suivante, mais je ne suis pas sûr si c'est le meilleur moyen.
For rowline = 1 To 50
strSQL = myquerystring (INSERT 5 columns per excel row)
rs.Open strSQL, oConn, adOpenDynamic, adLockOptimistic
Next rowline
Fondamentalement, la chaîne d'interrogation passe à travers chaque ligne de feuille Excel (de 1 à 50) et les données sur certaines cellules sont ajoutés à la requête SQL, puis inséré avec rs.Open .... (Chaque rangée a 5 colonnes qui sont insérées comme un enregistrement)
Tout fonctionne bien, mais je veux juste savoir s'il y a un moyen plus rapide (une seule requête INSERT), en insérant tous les 50 (et 5 colonnes sur chaque), de la rangée 1 à 50, tout à la fois.
En ce moment, il fait 50 requêtes INSERT individuelles, donc j'essaie de réduire cela à 1 mais je ne sais pas si c'est possible.
NOUVELLES INFORMATIONS:
Salut, suivant vos conseils et liens et quelques recherches sur Google, je me suis retrouvé avec le code suivant ... Il fonctionne très bien, mais pour insérer 100 lignes qu'il faut (merci!) environ 15 secondes .... c'est beaucoup trop. J'espère que je peux obtenir du code/des idées sur la façon d'exécuter la requête une fois, (en insérant toutes les 100 lignes dans un coup). S'il vous plaît noter que je suis un débutant sur ce sujet, donc si vous pouvez me mélanger dans quelques échantillons sur la façon dont il devrait être fait, il sera très apprécié.
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
Peut être intérêt: http: // stackoverflow.com/questions/2821718/excel-vba-écriture-à-mysql-base de données/2821911 # 2821911 – Fionnuala
merci Remou/tout pour votre entrée. Je vais évidemment dans le mauvais sens et j'ai beaucoup à apprendre. – griseldas