sql >> データベース >  >> RDS >> Sqlserver

SQLBulkCopyが存在する場合、挿入または更新する方法はありますか?

    この問題を解決するために、nugetパッケージ(SqlBulkTools)を公開しました。

    これは、一括アップサートを実現するコード例です。

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

    非常に大きなテーブルの場合、テーブルロックを追加し、非クラスター化インデックスを一時的に無効にするオプションがあります。その他の例については、SqlBulkToolsのドキュメントを参照してください。



    1. MySQLは重複レコードを削除します

    2. MariaDBで重複する行を削除する2つの方法(主キーを無視します)

    3. アダプティブダイナミック統計は12.1.0.2RACのパフォーマンスを低下させます

    4. Linux / WindowsでPgBouncerログをローテーションする方法は?