2009-07-02 10 views
2

私は雇用者のプロジェクトのためにコレクションをさまざまな形式に書き出すためのフレームワークを作成しています。出力フォーマットの1つに区切りテキストファイル(一般にCSVとも呼ばれますが、CSVは常にコンマで区切られていません)です。.NETで区切られたテキストファイルを書き込む

私はMicrosoft.Jet.OLEDB.4.0プロバイダをADO.netのOleDbConnection経由で使用しています。このファイルを読むためには、非常に高速です。しかし、執筆のためには、非常に遅いです。

あるケースでは、私は約250のフィールドを持つ各レコードで、160レコードのファイルを持っています。このファイルを作成するのに約30秒かかります。

私はパフォーマンスの大幅なブーストを提供した、次のことを行っているが、私は何かを考えることはできません。無名のパラメータ

その他を使用して

  • 一度文を準備

    1. これをスピードアップするための提案?

  • +0

    間違いなく、ヘルプを提供するためのコードが必要ですか。私はCSVファイルを書いているC#コードをいくつか持っています。 – marcc

    答えて

    5

    「OleDbConnectionを使用しないでください」... TextWriterで区切られたファイルを書き込むのはかなり簡単です(脇にエスケープする)。読むために、CsvReader

    +0

    私は自分のエスケープコードとStreamWriterを書きました。今のところうまくいくようです...まだOLEBBを読んで使っていますが、私が見ることのできないパフォーマンス上の問題はありません。 –

    1

    僕の雇用主には、ちょうどそれを行うための小さくてシンプルなクラスのセットが書かれています(フィールド長が固定されたCSVファイルやその他のフラットファイルの書き込みと読み込み)。 私はStreamWriter & StreamReaderクラスを使用しましたが、実際はかなり高速です。

    0

    ここのコードのように、System.Configuration.CommaDelimitedStringCollectionを使用して、オブジェクトのリストをTextWriterに印刷してみてください。

    public void CommaSeperatedWriteLine(TextWriter sw, params Object[] list) 
    { 
        if (list.Length > 0) 
        { 
         System.Configuration.CommaDelimitedStringCollection commaStr = new System.Configuration.CommaDelimitedStringCollection(); 
    
         foreach (Object obj in list) 
         { 
          commaStr.Add(obj.ToString()); 
         } 
    
         sw.WriteLine(commaStr.ToString()); 
        } 
    } 
    
    0

    コードプロジェクトからCSVライブラリにこのLINQを見てみましょう: http://www.codeproject.com/KB/linq/LINQtoCSV.aspx

    を私はまだこれを使用していないが、私は今、およそ一年のための私の参照ファイルでそれを持っていました。

    "このライブラリを使用すると、LINQクエリでCSVファイルを簡単に使用できます。

    関連する問題