본질적으로 거대한 사각형 매트릭스 인 10GB CSV 파일이 있습니다. 가능한 한 효율적으로 행렬의 단일 셀에 액세스 할 수있는 함수, 즉 행렬 [12345,20000]을 작성하려고합니다.CSV 임의 액세스; C#
크기를 감안할 때 분명히 전체 배열을 2D 배열에로드 할 수 없으므로 필자는 파일에서 직접 값을 읽어야합니다.
저는 FileStream.Seek를 사용하여 파일 임의 접근을 살펴 보았습니다. 그러나 불행히도 각 셀의 반올림 변수는 고정 폭이 아니기 때문에 봤습니다. 특정 바이트를 찾고 내가 어떤 종류의 산술에 의해보고있는 셀을 알 수는 없습니다.
필자는 파일을 스캔하고 각 행의 첫 번째 바이트 인덱스에 대한 찾아보기 테이블을 만드는 것을 고려했습니다. 이렇게하면 행렬 [12345,20000]에 액세스하려면 12345 행의 시작 부분을 찾은 다음 줄을 가로 질러 스캔하여 올바른 셀에 도달 할 때까지 쉼표를 계산합니다.
저는 이것을 시도하려고합니다. 그러나 다른 누구에게도 더 좋은 아이디어가 있습니까? 나는 이런 파일을 다루는 첫 번째 사람이 아닐 것이라고 확신합니다.
건배
편집 : 파일이 매우 희소 행렬이 포함되어 있음을 알아 두셔야합니다. CSV 파일의 구문 분석이 너무 느려지는 경우 파일을보다 적절하고 처리하기 쉬운 파일 형식으로 변환하는 것이 좋습니다. 스파 스 매트릭스를 저장하는 가장 좋은 방법은 무엇입니까?
이 방법으로 RAM을 검색하고로드하는 것을 방지 할 수있는 방법이 없습니다. 그것은 순차적 인 리더 일뿐입니다. –