sql >> Databáze >  >> RDS >> Sqlserver

Existuje nějaký způsob, jak vložit nebo aktualizovat SQLBulkCopy?

K vyřešení tohoto problému jsem publikoval balíček nuget (SqlBulkTools).

Zde je příklad kódu, který by dosáhl hromadného 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();
}

U velmi velkých tabulek existují možnosti pro přidání zámků tabulek a dočasné zakázání indexů bez klastrů. Další příklady naleznete v dokumentaci SqlBulkTools.



  1. SQLite nemůže otevřít soubor databáze (kód 14) při častém dotazu SELECT

  2. SELECT nebo INSERT řádek v jednom příkazu

  3. Jak nainstalovat více serverů PostgreSQL na RedHat Linux

  4. Výstup výsledků dotazu SQLite jako seznam oddělený tabulátory