Senior
Морате обрадити веома велики CSV фајл у Go-у. Како бисте то урадили без учитавања целог фајла у меморију?
sobes.tech АИ
Одговор од АИ
Для обработки очень большого 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)
}
}
Такой подход позволяет обрабатывать файл построчно, не загружая весь файл в память, что важно для больших данных.