Question :
Utilisiez auparavant Microsoft SQL Server, insertion de données en masse a été exécuté de manière transparente avec la classe SqlBulkCopy. Comment une fonctionnalité similaire peut-elle être obtenue dans MySQL, compte tenu des problèmes de performances ?
Réponse :
Éviter les hypothèses :
Souligner l'importance de la prise de décision fondée sur des preuves, la réponse réfute l'hypothèse selon laquelle l'écriture d'un DataTable dans un fichier CSV avant le chargement groupé dans MySQL entraînerait de mauvaises performances.
MySqlBulkLoader surpasse :
Dans une série de tests, la classe MySqlBulkLoader a largement surpassé les mises à jour standard de l'adaptateur de données MySQL au sein d'une transaction, complétant l'insertion de 100 000 lignes en seulement 5 à 6 secondes.
Solution de code :
Pour utiliser efficacement MySqlBulkLoader :
<code class="csharp">// Create a temporary CSV file string tempCsvFileSpec = @"C:\Users\Gord\Desktop\dump.csv"; using (StreamWriter writer = new StreamWriter(tempCsvFileSpec)) { Rfc4180Writer.WriteDataTable(rawData, writer, false); } // Perform bulk loading with MySqlBulkLoader var msbl = new MySqlBulkLoader(conn); msbl.TableName = "testtable"; msbl.FileName = tempCsvFileSpec; msbl.FieldTerminator = ","; msbl.FieldQuotationCharacter = '"'; msbl.Load(); // Cleanup System.IO.File.Delete(tempCsvFileSpec);</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!