Maison >base de données >tutoriel mysql >Comment insérer efficacement un DataTable dans une base de données SQL Server ?

Comment insérer efficacement un DataTable dans une base de données SQL Server ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-07 22:40:46186parcourir

How to Efficiently Insert a DataTable into a SQL Server Database?

Optimiser l'insertion par lots de DataTable dans la base de données

Lors de l'insertion de grandes quantités de données dans la base de données, l'insertion ligne par ligne est inefficace. L’utilisation de la technologie d’insertion par lots peut améliorer considérablement les performances.

SqlBulkCopy implémente une insertion de données efficace

Pour les bases de données SQL Server, la classe SqlBulkCopy fournit un moyen efficace d'insérer un DataTable dans la base de données en une seule opération. Cette méthode évite l’insertion ligne par ligne et réduit considérablement le temps de traitement.

Exemple de code

Le code suivant montre comment utiliser SqlBulkCopy :

<code class="language-csharp">using (var bulkCopy = new SqlBulkCopy(_connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity))
{
    // 将DataTable列映射到SQL表列
    foreach (DataColumn col in table.Columns)
    {
        bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);
    }

    // 设置目标表名
    bulkCopy.DestinationTableName = destinationTableName;

    // 设置超时时间(可选)
    bulkCopy.BulkCopyTimeout = 600;

    // 将DataTable插入数据库
    bulkCopy.WriteToServer(table);
}</code>

Mappage personnalisé (facultatif)

Si les noms de colonnes DataTable ne correspondent pas aux noms de colonnes de la table SQL, vous pouvez utiliser la propriété ColumnMappings de SqlBulkCopy pour effectuer un mappage manuel.

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!

Déclaration:
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