2012-06-23 2 views
0

나는 약 60000 행의 매우 큰 데이터 파일을 가지고 있습니다. 커브를 기반으로하는 CSV 파일을 각 열의 다른 배열로 분할해야합니다.CSV 파일을 읽고 각각의 열에 대해 서로 다른 배열로 분할해야합니다.

5 개의 열이 있습니다. State, County, Zipcode, Latitude, Longitude.

어떻게 파일을 읽을 때 분할하여 각 배열에 추가 할 수 있습니까?

State, County, Zipcode, LatitudeLongitude에 대한 배열이 있습니다.

답변

2

CSV 파서를 사용하십시오. VisualBasic 네임 스페이스에 내장 된 .NET도 많습니다.

VisualBasic 네임 스페이스에서 모든 .NET 언어에서 사용할 수있는 일반 .NET 라이브러리이지만 TextFieldParser을 참조하십시오.

manyotheroptions입니다. 수동으로 수행 할 경우

+0

이렇게하면 각 열을 구분하고 각 열의 모든 값을 다른 배열에 넣을 수 있습니까? –

+1

@AdamAndre - 그럴 수 있습니다. 비록 내가 일반적으로 데이터를 보유하고 유형의 제네릭 컬렉션을 사용하여 의미 있고 강력하게 형식화 된 컨테이너에 데이터를 갖기 위해 유형을 만들지 만. – Oded

+0

도와 주셔서 감사합니다. –

0

당신이 루프에 모든 행을 StreamReader을 사용할 수, (나 또한 TextFieldParser를 사용하는 것이 좋습니다)과 분리 (가정 쉼표)로 분할 String.Split를 사용

var stateList = new List<String>(); 
var countyList = new List<String>(); 
var zipCodeList = new List<String>(); 
var latitudeList = new List<String>(); 
var longitudeList = new List<String>(); 

using (var reader = new System.IO.StreamReader(@"C:\Temp\csv.txt")) 
{ 
    string line; 
    while ((line = r.ReadLine()) != null) 
    { 
     var fields = line.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); 
     stateList.Add(fields[0]); 
     if (fields.Length > 1) 
      countyList.Add(fields[1]); 
     if (fields.Length > 2) 
      zipCodeList.Add(fields[2]); 
     if (fields.Length > 3) 
      latitudeList.Add(fields[3]); 
     if (fields.Length > 4) 
      longitudeList.Add(fields[4]); 
    } 
} 

목록 대신 배열이 실제로 필요한 경우 :

String[] states = stateList.ToArray(); 
String[] counties = countyList.ToArray(); 
String[] zipCodes = zipCodeList.ToArray(); 
String[] latitudes = latitudeList.ToArray(); 
String[] longitudes = longitudeList.ToArray(); 
관련 문제