Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pembaruan Massal di C#

Apa yang telah saya lakukan sebelumnya adalah melakukan penyisipan massal dari data ke tabel temp, dan kemudian menggunakan perintah atau prosedur tersimpan untuk memperbarui data yang terkait tabel temp dengan tabel tujuan. Tabel temp adalah langkah ekstra, tetapi Anda dapat memperoleh peningkatan kinerja dengan penyisipan massal dan pembaruan besar-besaran jika jumlah barisnya besar, dibandingkan dengan memperbarui data baris demi baris.

Contoh:

public static void UpdateData<T>(List<T> list,string TableName)
{
    DataTable dt = new DataTable("MyTable");
    dt = ConvertToDataTable(list);

    using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SchoolSoulDataEntitiesForReport"].ConnectionString))
    {
        using (SqlCommand command = new SqlCommand("", conn))
        {
            try
            {
                conn.Open();

                //Creating temp table on database
                command.CommandText = "CREATE TABLE #TmpTable(...)";
                command.ExecuteNonQuery();

                //Bulk insert into temp table
                using (SqlBulkCopy bulkcopy = new SqlBulkCopy(conn))
                {
                    bulkcopy.BulkCopyTimeout = 660;
                    bulkcopy.DestinationTableName = "#TmpTable";
                    bulkcopy.WriteToServer(dt);
                    bulkcopy.Close();
                }

                // Updating destination table, and dropping temp table
                command.CommandTimeout = 300;
                command.CommandText = "UPDATE T SET ... FROM " + TableName + " T INNER JOIN #TmpTable Temp ON ...; DROP TABLE #TmpTable;";
                command.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                // Handle exception properly
            }
            finally
            {
                conn.Close();
            }
        }
    }
}

Perhatikan bahwa koneksi tunggal digunakan untuk melakukan seluruh operasi, agar dapat menggunakan tabel temp di setiap langkah, karena cakupan tabel temp adalah per koneksi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa saya mendapatkan kesalahan tipe data Xml tidak didukung dalam kueri terdistribusi saat menanyakan server tertaut untuk data non-xml?

  2. Menjalankan Paket SSIS menggunakan dtexec

  3. Pulihkan Database SQL dengan Mudah – Panduan Langkah demi Langkah

  4. Temukan nama kolom sebenarnya dari alias yang digunakan dalam tampilan?

  5. 2 Cara Mengembalikan Daftar Pemicu di Database SQL Server menggunakan T-SQL