2016-09-05 16 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);' - これはデータベースに書き込む場所ですか? –

+3

Envir.ItemInfoListの実装方法については言及していません。 Entity Frameworkのようなものへの同期呼び出しであれば、そのステップを改善することができます。 DBは一括挿入をサポートしていますか?それを調べる。 –

答えて

0

これをC#で行う場合は、SqlBulkCopyをおすすめします。私はsimilar answerをもう一度質問に返しました。過去に実装した方法の例については、そのリンクを参照してください。

利用可能な他のオプションを知りたい場合は、MSDNにデータロードガイドのオプションのリストがあります。 http://msdn.microsoft.com/en-us/library/dd425070(v=sql.100).aspx

関連する問題