读取大型CSV文件的最佳方法是,我一次只读一条记录而不是使用ReadAll()
。
reader := csv.NewReader(csvFile)
reader.FieldsPerRecord = -1
for {
// read just one record at a time
record, err := reader.Read()
if err == io.EOF {
break
} else if err != nil {
checkErr(err)
return
}
有没有更好的方法来节省内存?
我通过将GRPC上的数组发送到单独的服务来将每个记录/行写入数据库。
答案 0 :(得分:1)
是的,您可以使用一个选项来改进它
允许读者在每个Read
方法调用中重用由它返回的切片
为此,您需要设置reader.ReuseRecord = true
但要小心,因为在下次调用Read
之后可能会更改返回的切片!