Heim >Backend-Entwicklung >Golang >Wie kann ich CSV-Dateien in Go effizient lesen und schreiben?

Wie kann ich CSV-Dateien in Go effizient lesen und schreiben?

Susan Sarandon
Susan SarandonOriginal
2024-11-03 08:03:03506Durchsuche

How to Efficiently Read and Write CSV Files in Go?

Effizientes Lesen und Schreiben von CSV-Dateien in Go

Eine häufige Aufgabe in der Datenverarbeitung ist das performante Lesen und Schreiben von CSV-Dateien. Der in der Frage bereitgestellte Codeausschnitt zeigt eine langsame Methode zum Lesen einer CSV-Datei, zum Verarbeiten der Daten und zum Zurückschreiben. Eine potenzielle Ineffizienz liegt in dem Ansatz, die gesamte Datei vor der Verarbeitung in den Speicher zu laden.

Um den Code zu optimieren, wird empfohlen, die Datei schrittweise durch Aufruf von .Read() zu lesen und jeweils eine Zeile nach der anderen zu verarbeiten. Dadurch wird verhindert, dass die gesamte Datei in den Speicher geladen wird, was die Leistung insbesondere bei großen Dateien erheblich verbessern kann.

Hier ist ein alternativer Ansatz:

<code class="go">func processCSV(rc io.Reader) (ch chan []string) {
    ch = make(chan []string, 10)
    go func() {
        r := csv.NewReader(rc)
        if _, err := r.Read(); err != nil { //read header
            log.Fatal(err)
        }
        defer close(ch)
        for {
            rec, err := r.Read()
            if err != nil {
                if err == io.EOF {
                    break
                }
                log.Fatal(err)

            }
            ch <- rec
        }
    }()
    return
}</code>

Dieser Ansatz verwendet einen Kanal zum Übergeben Datensätze von der Reader-Goroutine zur Haupt-Goroutine zur Verarbeitung übertragen, was einen effizienteren inkrementellen Verarbeitungsansatz ermöglicht.

Durch die Übernahme dieser Technik, bei der Daten inkrementell gelesen und verarbeitet werden, können Sie die Leistung Ihres CSV-Lesens erheblich verbessern und Code schreiben.

Das obige ist der detaillierte Inhalt vonWie kann ich CSV-Dateien in Go effizient lesen und schreiben?. 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