본문 바로가기

복습용 기술공부

C# 에서 csv 파일 읽어오기

공공데이터를 가져와 pandas에서 가공 후 원하는 모델 형식에 맞춰 C#에 데이터를 넣어야 했다.

public void로 반환 없이 1회면 사용해 DB에 저장했다.

 

우선 csv 경로를 가져오고

string csvFilePath = "경로/파일.csv";

 

TextFieldParser로 csv를 불러왔다.

using (TextFieldParser parser = new TextFieldParser(csvFilePath))
{
    parser.TextFieldType = FieldType.Delimited;
    parser.SetDelimiters(",");  // 구분자 설정

    int cnt = 0;
    try
    {

        while (!parser.EndOfData)
        {
            if (cnt == 0)
            {
                cnt += 1;
                string[] fields = parser.ReadFields();
            }
            else
            {
                // CSV 파일에서 한 줄씩 읽기
                string[] fields = parser.ReadFields();
                var items = new COUSGroup
                {
                    COUSGroupName = fields[2],
                    COUSGroupSN = fields[1],
                    MaxGroup = 2000,
                    //GroupType = fields[8],
                    GroupType = fields[3],
                    _Location = fields[4],
                    latitude = Double.Parse(fields[5]),
                    longitude = Double.Parse(fields[6]),
                    City = fields[7]
                };
                _userdb.COUSWB_Groups.Add(items);
            }
        }
        _userdb.SaveChanges();
        Console.WriteLine("CSV DB로 옮기기 완료!");
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message, "에러발생!");
    };
}

 

csv 첫줄은 데이터 정보이기에 두 번 째 줄부터 작업하게 했다.

parser.ReadFields()로 한 줄 씩 읽고 그 fields에 구분자로 나뉘어진 객체를 Model에 바인딩해서 넣었다.