Heim > Datenbank > MySQL-Tutorial > Wie kann ich mithilfe von C# effizient eine Datentabelle massenhaft in eine SQL-Datenbank einfügen?

Wie kann ich mithilfe von C# effizient eine Datentabelle massenhaft in eine SQL-Datenbank einfügen?

Patricia Arquette
Freigeben: 2025-01-07 22:13:43
Original
478 Leute haben es durchsucht

How Can I Efficiently Bulk Insert a DataTable into a SQL Database Using C#?

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>
Nach dem Login kopieren

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:

  • Spaltenzuordnung: Stellen Sie sicher, dass Ihre DataTable Spaltennamen genau mit den Datenbankspaltennamen übereinstimmen. Wenn sie unterschiedlich sind, passen Sie ColumnMappings entsprechend an.
  • Identitätsspalte: SqlBulkCopyOptions.KeepIdentity bewahrt Identitätsspaltenwerte aus Ihrem DataTable.
  • Timeout: 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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage