Mengoptimumkan Sisipan Data dengan SqlBulkCopy dalam C#
Untuk set data yang besar, memasukkan data baris demi baris ke dalam pangkalan data SQL Server adalah tidak cekap. Kelas SqlBulkCopy
dalam C# menyediakan alternatif yang jauh lebih pantas untuk operasi pemasukan pukal.
Memanfaatkan SqlBulkCopy untuk Sisipan Pukal
SqlBulkCopy
direka untuk memindahkan volum data yang besar ke jadual pangkalan data dalam satu transaksi yang dioptimumkan. Begini cara untuk melaksanakannya:
using System.Data.SqlClient; // Establish connection and create SqlBulkCopy object using (var bulkCopy = new SqlBulkCopy(_connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity)) { // Map DataTable columns to database columns foreach (DataColumn column in table.Columns) { bulkCopy.ColumnMappings.Add(column.ColumnName, column.ColumnName); } // Specify destination table bulkCopy.DestinationTableName = destinationTableName; // Set timeout (in seconds) to prevent timeouts on large datasets bulkCopy.BulkCopyTimeout = 600; // Perform the bulk copy operation bulkCopy.WriteToServer(table); }
Penjelasan:
_connection.ConnectionString
: Rentetan sambungan pangkalan data anda.table
: DataTable
yang mengandungi data yang akan dimasukkan.destinationTableName
: Nama jadual sasaran dalam pangkalan data SQL Server anda.Pertimbangan Penting:
DataTable
anda tepat padan dengan nama lajur pangkalan data. Jika mereka berbeza, laraskan ColumnMappings
sewajarnya.SqlBulkCopyOptions.KeepIdentity
mengekalkan nilai lajur identiti daripada DataTable
anda.BulkCopyTimeout
menghalang tamat masa operasi, terutamanya penting untuk set data yang banyak. Laraskan nilai ini mengikut keperluan berdasarkan volum data dan keadaan rangkaian anda.Kaedah ini meningkatkan kelajuan pemasukan pangkalan data secara mendadak berbanding dengan sisipan baris individu, meningkatkan prestasi aplikasi dengan ketara apabila mengendalikan set data yang besar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memasukkan Jadual Data secara Pukal ke dalam Pangkalan Data SQL Menggunakan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!