Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jakiś sposób na wstawienie lub aktualizację SQLBulkCopy, jeśli istnieje?

Opublikowałem pakiet nuget (SqlBulkTools), aby rozwiązać ten problem.

Oto przykład kodu, który umożliwiłby masowe 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();
}

W przypadku bardzo dużych tabel dostępne są opcje dodawania blokad tabel i tymczasowego wyłączania indeksów nieklastrowanych. Więcej przykładów znajdziesz w dokumentacji SqlBulkTools.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak możemy wyświetlić treść zaszyfrowanej procedury składowanej w programie SSMS?

  2. Wybór COUNT(*) z DISTINCT

  3. SQL Server:kolumny indeksu używane w podobnym?

  4. Naruszenie ograniczenia UNIQUE KEY na INSERT WHERE COUNT(*) =0 w SQL Server 2005

  5. Indeks wznowień programu SQL Server:Czy to jest dla Ciebie dobre?