Maison  >  Article  >  base de données  >  Comment optimiser le chargement de données en masse dans MySQL à partir de DataTable avec MySqlBulkLoader ?

Comment optimiser le chargement de données en masse dans MySQL à partir de DataTable avec MySqlBulkLoader ?

DDD
DDDoriginal
2024-10-24 06:12:30918parcourir

How to Optimize Bulk Data Loading into MySQL from DataTable with MySqlBulkLoader?

Copie en masse d'un DataTable dans MySQL avec optimisation des performances

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn