"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo leer y escribir archivos CSV de manera eficiente en Go?

¿Cómo leer y escribir archivos CSV de manera eficiente en Go?

Publicado el 2024-11-08
Navegar:267

How to Efficiently Read and Write CSV Files in Go?

Lectura y escritura eficientes de archivos CSV en Go

Una tarea común en el procesamiento de datos es leer y escribir archivos CSV de manera eficiente. El fragmento de código proporcionado en la pregunta demuestra un método lento para leer un archivo CSV, procesar los datos y volver a escribirlos. Una posible ineficiencia radica en el enfoque de cargar todo el archivo en la memoria antes de procesarlo.

Para optimizar el código, se recomienda leer el archivo de forma incremental llamando a .Read() y procesar una línea a la vez. Esto evita que todo el archivo se cargue en la memoria, lo que puede mejorar significativamente el rendimiento, especialmente para archivos grandes.

Aquí hay un enfoque alternativo:

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 

Este enfoque utiliza un canal para pasar registros de la rutina de lectura a la rutina principal para su procesamiento, lo que permite un enfoque de procesamiento incremental más eficiente.

Al adoptar esta técnica, que implica leer y Al procesar datos de forma incremental, puede mejorar significativamente el rendimiento de su código de lectura y escritura CSV.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3