매우 큰 .csv 파일을 읽고 구문 분석하는 데 encoding/csv
을 사용하고 있습니다.
임의로 선을 선택하고 몇 가지 테스트를 통과해야합니다.
나의 현재 솔루션은 명백한 문제가 전체를 읽고 내가 많은 메모리를 필요로하는 데 시간이 오래 걸립니다 lines
에서이동 중에 텍스트 파일에서 임의의 행을 읽습니다.
reader := csv.NewReader(file)
lines, err := reader.ReadAll()
무작위 선택 라인과 같은 전체 파일을 읽는 것입니다.
질문 :
내 질문에 encoding/csv
가 io/reader
대신 한 번에 전체를로드하는 임의의 줄을 읽어 그것을 사용하는 방법이 나에게주는입니까?
io/reader
에 대해 더 많은 것을 알기에 더 많은 호기심이 생깁니다. 결국에는 한 번 읽고 메모리에 액세스하면 결국 무작위로 줄을 찾아내는 것이 더 효율적 일 것입니다. 디스크.
당신이 옳긴하지만 분명히하기 위해'csv.Reader'는'io.Reader'를 구현합니다. 그래서'csv.Reader' *는 실제로'io.Reader'입니다. – Matt