여러 csv 파일을 읽고 병합해야합니다. 병합 된 데이터는 차트 생성에 사용됩니다 (.NET 차트 컨트롤 사용).다른 헤더/열이있는 csv 로그 파일 읽기
는 지금까지 간단한에서는 StreamReader와 함께이 일을하고 DataTable을 하나에 모든 것을 추가 한 :
while (sr.Peek() > -1)
{
strLine = sr.ReadLine();
strLine = strLine.TrimEnd(';');
strArray = strLine.Split(delimiter);
dataTableMergedData.Rows.Add(strArray);
}
을하지만 지금 문제는 로그 파일을 변경할 수,있다. 여기서 볼 수 있듯이 최신 로그 파일에는 다음과 같은 추가 열이 있습니다.
현재 절차가 작동하지 않으며이를 수행하는 방법에 대해 조언을 구하고 있습니다. 성능은 중요합니다. 왜냐하면 모든 로그 파일에는 약 1500 개의 행과 최대 100 개의 열이 포함되고 로그 파일은 1 년 기간 (365 개의 파일과 동일)까지 병합됩니다.
이렇게하면됩니다 : 마지막에 모든 데이터를 포함하고 각 로그 파일을 별도의 DataTable로 읽어야하는 DataTable 만들기. 각 읽기 작업 후에 별도의 DataTable을 "큰"DataTable에 추가하고 열이 변경되었는지 확인하고 변경 한 경우 새 열을 추가합니다.
하지만 DataTables를 사용하면 성능에 영향을 미칠 수 있습니다.
참고 : 저는 winforms로이 작업을 수행하고 있지만 어쨌든 중요하지 않습니다.
편집 : 시도한 CsvReader 그러나 이것은 현재 솔루션보다 약 4 배 느립니다. 시험 시간은 내가 그것을 내가 질문에 그것을 설명하는 방법을 한 후