Maison > base de données > tutoriel mysql > Comment puis-je insérer efficacement un DataTable dans une base de données SQL à l'aide de C# ?

Comment puis-je insérer efficacement un DataTable dans une base de données SQL à l'aide de C# ?

Patricia Arquette
Libérer: 2025-01-07 22:13:43
original
478 Les gens l'ont consulté

How Can I Efficiently Bulk Insert a DataTable into a SQL Database Using C#?

Optimisation de l'insertion de données avec SqlBulkCopy en C#

Pour les grands ensembles de données, l'insertion de données ligne par ligne dans une base de données SQL Server est inefficace. La classe SqlBulkCopy en C# offre une alternative beaucoup plus rapide pour les opérations d'insertion en masse.

Exploiter SqlBulkCopy pour les insertions en masse

SqlBulkCopy est conçu pour transférer de gros volumes de données vers une table de base de données en une seule transaction optimisée. Voici comment le mettre en œuvre :

<code class="language-csharp">using System.Data.SqlClient;

// Establish connection and create SqlBulkCopy object
using (var bulkCopy = new SqlBulkCopy(_connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity))
{
    // Map DataTable columns to database columns
    foreach (DataColumn column in table.Columns)
    {
        bulkCopy.ColumnMappings.Add(column.ColumnName, column.ColumnName);
    }

    // Specify destination table
    bulkCopy.DestinationTableName = destinationTableName;

    // Set timeout (in seconds) to prevent timeouts on large datasets
    bulkCopy.BulkCopyTimeout = 600;

    // Perform the bulk copy operation
    bulkCopy.WriteToServer(table);
}</code>
Copier après la connexion

Explication :

  • _connection.ConnectionString : Votre chaîne de connexion à la base de données.
  • table : Le DataTable contenant les données à insérer.
  • destinationTableName : Le nom de la table cible dans votre base de données SQL Server.

Considérations importantes :

  • Mappage des colonnes : Assurez-vous que vos DataTable noms de colonnes correspondent précisément aux noms de colonnes de la base de données. S'ils diffèrent, ajustez le ColumnMappings en conséquence.
  • Colonne d'identité : SqlBulkCopyOptions.KeepIdentity préserve les valeurs de la colonne d'identité de votre DataTable.
  • Timeout : BulkCopyTimeout empêche les délais d'attente des opérations, particulièrement cruciaux pour des ensembles de données importants. Ajustez cette valeur si nécessaire en fonction de votre volume de données et des conditions du réseau.

Cette méthode améliore considérablement la vitesse d'insertion de la base de données par rapport aux insertions de lignes individuelles, améliorant ainsi considérablement les performances des applications lors de la gestion de grands ensembles de données.

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