Sobes.tech
Senior
30

You need to process a very large CSV file in Go. How would you do it without loading the entire file into memory?

Сұралған компаниялар
AndersenAndersen

AI-дан жауап

sobes.tech AI

Для обработки очень большого CSV файла в Go без загрузки всего файла в память, нужно читать и обрабатывать его построчно, используя потоковое чтение.

Можно использовать пакет encoding/csv вместе с bufio.Scanner или csv.Reader, который читает файл по строкам.

Пример:

package main

import (
    "encoding/csv"
    "fmt"
    "io"
    "log"
    "os"
)

func main() {
    file, err := os.Open("large.csv")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    reader := csv.NewReader(file)

    for {
        record, err := reader.Read()
        if err == io.EOF {
            break
        }
        if err != nil {
            log.Fatal(err)
        }
        // Обработка одной строки CSV
        fmt.Println(record)
    }
}

Такой подход позволяет обрабатывать файл построчно, не загружая весь файл в память, что важно для больших данных.