Maison > base de données > tutoriel mysql > Comment SqlBulkCopy peut-il optimiser les insertions de base de données DataTable ?

Comment SqlBulkCopy peut-il optimiser les insertions de base de données DataTable ?

Susan Sarandon
Libérer: 2025-01-08 00:36:43
original
712 Les gens l'ont consulté

How Can SqlBulkCopy Optimize DataTable Database Inserts?

Accélération des insertions de base de données DataTable avec SqlBulkCopy

L'insertion de grands ensembles de données ligne par ligne dans une base de données est notoirement lente. Cet article présente une méthode beaucoup plus efficace : utiliser SqlBulkCopy pour insérer un DataTable entier à la fois.

SqlBulkCopy : insertion de données en masse pour des performances améliorées

SqlBulkCopy, une classe au sein de l'espace de noms .NET System.Data.SqlClient, permet l'insertion de données en masse à grande vitesse. Il surpasse considérablement les insertions de lignes individuelles en optimisant le transfert de données et en minimisant les interactions avec la base de données.

Mise en œuvre : un exemple pratique

L'utilisation de SqlBulkCopy nécessite une connexion à la base de données et un objet SqlBulkCopy correctement configuré. L'extrait de code suivant illustre le processus :

<code class="language-csharp">using (var bulkCopy = new SqlBulkCopy(_connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity))
{
    // Assumes DataTable and SQL table columns have matching names.
    foreach (DataColumn col in table.Columns)
    {
        bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);
    }

    bulkCopy.BulkCopyTimeout = 600; // Timeout in seconds
    bulkCopy.DestinationTableName = destinationTableName;
    bulkCopy.WriteToServer(table);
}</code>
Copier après la connexion

Résolution des écarts de mappage de colonnes

L'exemple ci-dessus suppose des noms de colonnes identiques entre le DataTable et la table SQL. Si ce n'est pas le cas, vous devrez définir explicitement les mappages de colonnes au sein de la collection ColumnMappings pour garantir une insertion précise des données.

Cette méthode s'avère particulièrement bénéfique lors de l'insertion de grands ensembles de données avec moins de colonnes que la table SQL cible. Les colonnes sans correspondance prendront automatiquement par défaut les valeurs NULL. En utilisant SqlBulkCopy, vous améliorez considérablement les performances d'insertion de DataTable, en évitant les goulots d'étranglement des méthodes itératives ligne par ligne.

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.cn
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