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>
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 :
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.SqlBulkCopyOptions.KeepIdentity
préserve les valeurs de la colonne d'identité de votre DataTable
.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!