Heim >Backend-Entwicklung >C++ >Wie laden Sie CSV -Daten effizient in ein .NET -DataTable?

Wie laden Sie CSV -Daten effizient in ein .NET -DataTable?

Barbara Streisand
Barbara StreisandOriginal
2025-01-27 19:31:08947Durchsuche

Laden Sie CSV-Daten effizient in .NET DataTable

Das Laden von CSV-Daten in DataTable ist eine häufige Aufgabe bei der Datenverarbeitung und -analyse. In diesem Artikel wird untersucht, wie Sie dies mithilfe der integrierten Funktionen von .NET erreichen können, wobei der Schwerpunkt auf der Erstellung eines Schemas aus einer CSV-Datei liegt.

How to Efficiently Load CSV Data into a .NET DataTable?

Standardfunktionen von ADO.NET verwenden

Das Standard-ADO.NET-Framework unterstützt das Lesen von CSV-Dateien nicht direkt. Wir können jedoch den OleDb-Anbieter nutzen, um CSV-Daten zu importieren, indem wir eine Schemadefinitionsdatei erstellen.

Schema mithilfe der .INI-Datei erstellen

Um eine Schemadatei (schema.ini) zu erstellen, befolgen Sie diese Schritte:

  1. Fügen Sie den folgenden Code in eine Datei namens schema.ini ein:
<code>[FileName.csv]
Format=CSVDelimited
ColNameHeader=True
MaxScanRows=0</code>
  1. Speichern Sie die Datei im selben Verzeichnis wie die CSV-Datei.

Code-Implementierung

Der folgende Code zeigt, wie CSV-Daten mithilfe des OleDb-Anbieters mit einer Schemadefinitionsdatei in eine DataTable geladen werden:

<code class="language-csharp">using System.Data;
using System.Data.OleDb;
using System.Globalization;
using System.IO;

static DataTable GetDataTableFromCsv(string path, bool isFirstRowHeader)
{
    string header = isFirstRowHeader ? "Yes" : "No";

    string pathOnly = Path.GetDirectoryName(path);
    string fileName = Path.GetFileName(path);

    string sql = @"SELECT * FROM [" + fileName + "]";

    using (OleDbConnection connection = new OleDbConnection(
        @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly +
        ";Extended Properties=\"Text;HDR=" + header + "\""))
    using (OleDbCommand command = new OleDbCommand(sql, connection))
    using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
    {
        DataTable dataTable = new DataTable();
        dataTable.Locale = CultureInfo.CurrentCulture;
        adapter.Fill(dataTable);
        return dataTable;
    }
}</code>

Diese Methode verwendet als Eingabe einen CSV-Dateipfad und ein Flag, das angibt, ob die erste Zeile Spaltenüberschriften enthält. Es gibt eine gefüllte Datentabelle basierend auf CSV-Daten zurück.

Diese Methode akzeptiert den CSV-Dateipfad und einen booleschen Wert als Parameter, der angibt, ob die erste Zeile die Kopfzeile ist. Es gibt eine mit CSV-Daten gefüllte DataTable zurück. Der verbesserte Code fügt using System.Globalization;- und using System.IO;-Namespaceverweise hinzu und demonstriert die Funktionalität des Codes deutlicher.

Das obige ist der detaillierte Inhalt vonWie laden Sie CSV -Daten effizient in ein .NET -DataTable?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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