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?
Сұралған компаниялар
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)
}
}
Такой подход позволяет обрабатывать файл построчно, не загружая весь файл в память, что важно для больших данных.