2016-09-05 8 views
0

텍스트 파일에서 플랫 파일 데이터베이스로 데이터를 가져와야합니다. 모든 데이터를 데이터베이스에로드하는 더 빠른 방법이 있지만 확실하지 않습니다.텍스트 파일에서 데이터를 가져 오는 더 빠른 방법

private void ImportButton_Click(object sender, EventArgs e) 
{ 
    string Path = string.Empty; 

    OpenFileDialog ofd = new OpenFileDialog(); 
    ofd.Filter = "Text File|*.txt"; 
    ofd.ShowDialog(); 

    if (ofd.FileName == string.Empty) return 

    Path = ofd.FileName; 

    string data; 
    using (var sr = new StreamReader(Path)) 
    { 
     data = sr.ReadToEnd(); 
    } 

    var items = data.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); 

    var count = 0; 
    foreach (var info in items.Select(ItemInfo.FromText).Where(info => info != null)) 
    { 
     count++; 
     info.Index = ++Envir.ItemIndex; 
     Envir.ItemInfoList.Add(info); 
    } 

    MessageBox.Show(count + " Items have been imported"); 
    UpdateInterface(true); 
} 
+0

꽤 빠를 것 같습니다. 'var items = File.ReadAllLines (Path);'를 써서 코드를 작게 만들 수 있습니다. – Enigmativity

+1

'Envir.ItemInfoList.Add (info);'-이 곳을 DB에 쓰고 있습니까? –

+3

Envir.ItemInfoList가 어떻게 구현되는지는 말하지 않습니다. Entity Framework와 같은 동기식 호출 인 경우 해당 단계를 향상시킬 수 있습니다. DB가 대량 삽입을 지원합니까? 그것을 조사하십시오. –

답변

0

C#을 통해이 작업을 수행하는 경우 SqlBulkCopy를 권하고 싶습니다. 나는 한동안 다른 질문에 similar answer을 제공했다. 과거에 구현 한 방법의 예는 해당 링크를 참조하십시오.

다른 옵션을 알고 싶으면 MSDN에는 데이터로드 가이드의 옵션 목록이 있습니다. http://msdn.microsoft.com/en-us/library/dd425070(v=sql.100).aspx

관련 문제