Using SQLBulkCopy to Insert/Update database

前端 未结 4 1808
遥遥无期
遥遥无期 2020-12-10 14:51

I have a datatable with the records.I\'m inserting records into Sql table using SqlBulkCopy.It works fine.Next time when get the datatable with same records with few changed

相关标签:
4条回答
  • 2020-12-10 15:27

    Truncate the table and perform Bulkcopy.

    0 讨论(0)
  • 2020-12-10 15:34

    Like mentioned by AdaTheDev, SqlBulkCopy can only insert however there is an alternative library which allow to perform Upsert operations.

    Disclaimer: I'm the owner of the project Bulk Operations

    The Bulk Operations library has a method "BulkMerge" which Insert or Update rows based on the specified key.

    var bulk = new BulkOperation(connection);
    
    bulk.ColumnMappings.Add("ID", true);
    bulk.ColumnMappings.Add("Column1");
    bulk.ColumnMappings.Add("Column2");
    bulk.ColumnMappings.Add("Column3");
    
    bulk.BulkMerge(dt);
    
    0 讨论(0)
  • 2020-12-10 15:42

    Avoid Truncate table and Create a new temporary table, which BTW consume more space and memory.

    I created a Trigger with INSTEAD OF INSERT and use inside MERGE statement.

    But don't forget add the parameter SqlBulkCopyOptions.FireTriggers in the SqlBulkCopy.

    This is my two cents.

    0 讨论(0)
  • 2020-12-10 15:43

    SqlBulkCopy is only used for inserting records, not updating them as explained here. You'd need to use a different technique to do bulk updates.

    e.g. you could SqlBulkCopy into a staging table, then run some SQL to update from there to the main table.

    0 讨论(0)
提交回复
热议问题