Optimieren der Dateneinfügung mit SqlBulkCopy in C#
Bei großen Datensätzen ist das zeilenweise Einfügen von Daten in eine SQL Server-Datenbank ineffizient. Die SqlBulkCopy
-Klasse in C# bietet eine deutlich schnellere Alternative für Masseneinfügungsvorgänge.
Nutzung von SqlBulkCopy für Masseneinfügungen
SqlBulkCopy
wurde entwickelt, um große Datenmengen in einer einzigen, optimierten Transaktion in eine Datenbanktabelle zu übertragen. So implementieren Sie es:
<code class="language-csharp">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); }</code>
Erklärung:
_connection.ConnectionString
: Ihre Datenbankverbindungszeichenfolge.table
: Das DataTable
, das die einzufügenden Daten enthält.destinationTableName
: Der Name der Zieltabelle in Ihrer SQL Server-Datenbank.Wichtige Überlegungen:
DataTable
Spaltennamen genau mit den Datenbankspaltennamen übereinstimmen. Wenn sie unterschiedlich sind, passen Sie ColumnMappings
entsprechend an.SqlBulkCopyOptions.KeepIdentity
bewahrt Identitätsspaltenwerte aus Ihrem DataTable
.BulkCopyTimeout
verhindert Betriebs-Timeouts, was besonders wichtig für umfangreiche Datensätze ist. Passen Sie diesen Wert je nach Datenvolumen und Netzwerkbedingungen an.Diese Methode verbessert die Einfügungsgeschwindigkeit in die Datenbank erheblich im Vergleich zum Einfügen einzelner Zeilen und steigert die Anwendungsleistung bei der Verarbeitung großer Datenmengen erheblich.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von C# effizient eine Datentabelle massenhaft in eine SQL-Datenbank einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!