Maison > base de données > tutoriel mysql > 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
Libérer: 2024-10-24 06:12:30
original
991 Les gens l'ont consulté

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal