sql >> Database >  >> RDS >> Sqlserver

Een manier om SQLBulkCopy in te voegen of bij te werken als deze bestaat?

Ik heb een nuget-pakket (SqlBulkTools) gepubliceerd om dit probleem op te lossen.

Hier is een codevoorbeeld dat een bulkupsert zou opleveren.

var bulk = new BulkOperations();
var books = GetBooks();

using (TransactionScope trans = new TransactionScope())
{
    using (SqlConnection conn = new SqlConnection(ConfigurationManager
    .ConnectionStrings["SqlBulkToolsTest"].ConnectionString))
    {
        bulk.Setup<Book>()
            .ForCollection(books)
            .WithTable("Books")
            .AddAllColumns()
            .BulkInsertOrUpdate()
            .MatchTargetOn(x => x.ISBN)
            .Commit(conn);
    }

    trans.Complete();
}

Voor zeer grote tabellen zijn er opties om tabelvergrendelingen toe te voegen en niet-geclusterde indexen tijdelijk uit te schakelen. Zie SqlBulkTools-documentatie voor meer voorbeelden.



  1. De IIf()-functie versus de IIf()-instructie

  2. GUI-tool voor PostgreSQL

  3. ODBC gebruiken met Salesforce en Okta Single Sign On (SSO)

  4. Gebruik FILEGROUP_ID() om de ID van een bestandsgroep in SQL Server te retourneren