"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como ler e gravar arquivos CSV com eficiência no Go?

Como ler e gravar arquivos CSV com eficiência no Go?

Publicado em 2024-11-08
Navegar:691

How to Efficiently Read and Write CSV Files in Go?

Leitura e gravação eficiente de arquivos CSV em Go

Uma tarefa comum no processamento de dados é ler e gravar arquivos CSV com bom desempenho. O trecho de código fornecido na pergunta demonstra um método lento para ler um arquivo CSV, processar os dados e gravá-los novamente. Uma ineficiência potencial reside na abordagem de carregar o arquivo inteiro na memória antes do processamento.

Para otimizar o código, é recomendado ler o arquivo de forma incremental chamando .Read() e processar uma linha por vez. Isso evita que o arquivo inteiro seja carregado na memória, o que pode melhorar significativamente o desempenho, especialmente para arquivos grandes.

Aqui está uma abordagem alternativa:

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 

Esta abordagem usa um canal para passar registros da goroutine do leitor para a goroutine principal para processamento, permitindo uma abordagem de processamento incremental mais eficiente.

Ao adotar esta técnica, que envolve leitura e processando dados de forma incremental, você pode melhorar significativamente o desempenho de leitura e gravação de código CSV.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3