"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment lire et écrire efficacement des fichiers CSV dans Go ?

Comment lire et écrire efficacement des fichiers CSV dans Go ?

Publié le 2024-11-08
Parcourir:287

How to Efficiently Read and Write CSV Files in Go?

Lecture et écriture efficaces de fichiers CSV dans Go

Une tâche courante dans le traitement des données consiste à lire et à écrire des fichiers CSV de manière performante. L'extrait de code fourni dans la question démontre une méthode lente pour lire un fichier CSV, traiter les données et les réécrire. Une inefficacité potentielle réside dans l'approche consistant à charger l'intégralité du fichier en mémoire avant le traitement.

Pour optimiser le code, il est recommandé de lire le fichier de manière incrémentielle en appelant .Read() et de traiter une ligne à la fois. Cela empêche le chargement de l'intégralité du fichier en mémoire, ce qui peut améliorer considérablement les performances, en particulier pour les fichiers volumineux.

Voici une approche alternative :

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 

Cette approche utilise un canal pour transmettre les enregistrements de la goroutine du lecteur à la goroutine principale pour le traitement, permettant une approche de traitement incrémental plus efficace.

En adoptant cette technique, qui implique la lecture et En traitant les données de manière incrémentielle, vous pouvez améliorer considérablement les performances de lecture et d'écriture de votre code CSV.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3