Sobes.tech
Назад к вопросам
Senior
1

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

Компании, где спрашивали
AndersenAndersen

Ответ от нейросети

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)
    }
}

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