sql >> Database teknologi >  >> RDS >> Sqlserver

Enhver måde at indsætte eller opdatere SQLBulkCopy på, hvis den findes?

Jeg udgav en nuget-pakke (SqlBulkTools) for at løse dette problem.

Her er et kodeeksempel, der ville opnå en bulk upsert.

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();
}

For meget store borde er der muligheder for at tilføje tabellåse og midlertidigt deaktivere ikke-klyngede indekser. Se SqlBulkTools-dokumentationen for flere eksempler.



  1. AFTER LOGON(Oracle) trigger i PostgreSQL med udvidelse – login_hook

  2. Sådan oprettes og manipuleres SQL-databaser med Python

  3. Sådan beregnes løbende total i MySQL

  4. Slut dig til 3 tabeller i SQL