Mempercepatkan Sisipan Pangkalan Data Jadual Data dengan SqlBulkCopy
Memasukkan set data besar baris demi baris ke dalam pangkalan data adalah sangat lambat. Artikel ini menunjukkan kaedah yang jauh lebih cekap: menggunakan SqlBulkCopy untuk memasukkan keseluruhan Jadual Data sekaligus.
SqlBulkCopy: Sisipan Data Pukal untuk Prestasi Dipertingkat
SqlBulkCopy, kelas dalam ruang nama .NET System.Data.SqlClient, membolehkan pemasukan data pukal berkelajuan tinggi. Ia dengan ketara mengatasi sisipan baris individu dengan mengoptimumkan pemindahan data dan meminimumkan interaksi pangkalan data.
Pelaksanaan: Contoh Praktikal
Menggunakan SqlBulkCopy memerlukan sambungan pangkalan data dan objek SqlBulkCopy yang dikonfigurasikan dengan betul. Coretan kod berikut menggambarkan proses:
<code class="language-csharp">using (var bulkCopy = new SqlBulkCopy(_connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity)) { // Assumes DataTable and SQL table columns have matching names. foreach (DataColumn col in table.Columns) { bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName); } bulkCopy.BulkCopyTimeout = 600; // Timeout in seconds bulkCopy.DestinationTableName = destinationTableName; bulkCopy.WriteToServer(table); }</code>
Mengatasi Percanggahan Pemetaan Lajur
Contoh di atas menganggap nama lajur yang sama antara Jadual Data dan jadual SQL. Jika ini tidak berlaku, anda perlu mentakrifkan pemetaan lajur secara eksplisit dalam koleksi ColumnMappings
untuk memastikan sisipan data yang tepat.
Kaedah ini terbukti sangat berfaedah apabila memasukkan set data besar dengan lajur yang lebih sedikit daripada jadual SQL sasaran. Lajur yang tidak sepadan akan lalai secara automatik kepada nilai NULL. Dengan menggunakan SqlBulkCopy, anda meningkatkan prestasi pemasukan DataTable secara mendadak, mengelakkan kesesakan prestasi kaedah baris demi baris berulang.
Atas ialah kandungan terperinci Bagaimanakah SqlBulkCopy Boleh Mengoptimumkan Sisipan Pangkalan Data Jadual Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!