Beschleunigung von DataTable-Datenbankeinfügungen mit SqlBulkCopy
Das zeilenweise Einfügen großer Datensätze in eine Datenbank ist notorisch langsam. Dieser Artikel zeigt eine weitaus effizientere Methode: die Verwendung von SqlBulkCopy, um eine gesamte DataTable auf einmal einzufügen.
SqlBulkCopy: Massendateneinfügung für verbesserte Leistung
SqlBulkCopy, eine Klasse im .NET System.Data.SqlClient-Namespace, ermöglicht das schnelle Einfügen von Massendaten. Es übertrifft das Einfügen einzelner Zeilen deutlich, indem es die Datenübertragung optimiert und Datenbankinteraktionen minimiert.
Umsetzung: Ein praktisches Beispiel
Für die Verwendung von SqlBulkCopy sind eine Datenbankverbindung und ein ordnungsgemäß konfiguriertes SqlBulkCopy-Objekt erforderlich. Der folgende Codeausschnitt veranschaulicht den Vorgang:
<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>
Beheben von Diskrepanzen bei der Spaltenzuordnung
Das obige Beispiel setzt identische Spaltennamen zwischen der DataTable und der SQL-Tabelle voraus. Ist dies nicht der Fall, müssen Sie Spaltenzuordnungen innerhalb der ColumnMappings
-Sammlung explizit definieren, um eine genaue Dateneinfügung sicherzustellen.
Diese Methode erweist sich besonders beim Einfügen großer Datensätze mit weniger Spalten als die Ziel-SQL-Tabelle als nützlich. Nicht übereinstimmende Spalten werden automatisch auf NULL-Werte gesetzt. Durch den Einsatz von SqlBulkCopy verbessern Sie die Leistung beim Einfügen von DataTables erheblich und vermeiden die Leistungsengpässe iterativer zeilenweiser Methoden.
Das obige ist der detaillierte Inhalt vonWie kann SqlBulkCopy DataTable-Datenbankeinfügungen optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!