如何阅读大型CSV文件

时间:2018-04-02 19:41:03

标签: csv go

读取大型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上的数组发送到单独的服务来将每个记录/行写入数据库。

1 个答案:

答案 0 :(得分:1)

是的,您可以使用一个选项来改进它 允许读者在每个Read方法调用中重用由它返回的切片 为此,您需要设置reader.ReuseRecord = true 但要小心,因为在下次调用Read之后可能会更改返回的切片!