Maison > base de données > tutoriel mysql > Comment optimiser la copie groupée de tables de données dans MySQL à l'aide d'un fichier CSV temporaire ?

Comment optimiser la copie groupée de tables de données dans MySQL à l'aide d'un fichier CSV temporaire ?

Linda Hamilton
Libérer: 2024-10-24 06:11:02
original
794 Les gens l'ont consulté

How to Optimize Bulk Copying DataTables into MySQL Using a Temporary CSV File?

Copie en masse d'un DataTable dans MySQL à l'aide d'un fichier CSV temporaire

Lors de la migration vers MySQL à partir de Microsoft SQL Server, vous pouvez rencontrer des problèmes avec la migration en masse vers MySQL copie à l'aide d'une écriture directe DataTable. Bien que la classe SqlBulkCopy ne soit pas disponible nativement dans MySQL, il vaut la peine d'envisager d'utiliser un fichier CSV temporaire comme intermédiaire pour des performances optimales.

Une hypothèse à éviter est que le chargement groupé via un fichier CSV entraînera intrinsèquement de mauvaises performances. performance. Des tests empiriques ont montré que l'utilisation de la classe MySqlBulkLoader peut réduire considérablement les temps d'insertion par rapport aux mises à jour directes via un MySqlDataAdapter.

Pour y parvenir, suivez ces étapes :

  1. Écrivez le contenu de DataTable dans un fichier CSV temporaire à l'aide d'un rédacteur CSV approprié.
  2. Initialisez un nouvel objet MySqlBulkLoader et définissez ses propriétés :

    • TableName pour qu'il corresponde à la table cible
    • FileName pour pointer vers le fichier CSV
    • FieldTerminator et FieldQuotationCharacter selon les besoins
  3. Appelez la méthode Load() pour charger en bloc les données du fichier CSV
  4. Supprimez le fichier CSV temporaire une fois le chargement terminé

Exemple de code :

<code class="csharp">string tempCsvFileSpec = @"C:\Users\Gord\Desktop\dump.csv";
using (StreamWriter writer = new StreamWriter(tempCsvFileSpec))
{
    Rfc4180Writer.WriteDataTable(rawData, writer, false);
}
var msbl = new MySqlBulkLoader(conn);
msbl.TableName = "testtable";
msbl.FileName = tempCsvFileSpec;
msbl.FieldTerminator = ",";
msbl.FieldQuotationCharacter = '"';
msbl.Load();
System.IO.File.Delete(tempCsvFileSpec);</code>
Copier après la connexion

En tirant parti de la classe MySQLBulkLoader et d'un fichier CSV temporaire, vous pouvez réaliser une copie en masse efficace de DataTables dans MySQL avec des performances améliorées par rapport aux mises à jour directes.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal