2012-02-14 19 views
0

私はcsvファイルにSQLデータセットを保存するアプリケーションを持っています。データを読み込み、各行を文字列に保存してから、文字列をテキストファイルに保存します。問題は25k行以上あり、処理に時間がかかることです。これを行うより速い方法がありますか?.Netを使用したCSVファイルへのSQLのエクスポート

SqlDataAdapter sSQL2 = new SqlDataAdapter("SelUsersEmails", Conn); 
DataSet RS2 = new DataSet(); 
sSQL2.Fill(RS2, "SelUsersEmails"); 


s = "UserID,SignUpDate,Email,PayPalEmail,Firstname,Lastname" + Environment.NewLine; 



foreach (DataRow u in RS2.Tables["SelUsersEmails"].Rows) 
{//loop each 
     s += u["UserID"].ToString() + "," + u["SignUpDate"].ToString() + "," +["Email"].ToString() + "," + u["NetworkEmail"].ToString() + "," + ["Firstname"].ToString() + "," + u["Lastname"].ToString(); 

     s += Environment.NewLine; 

} 

答えて

1

を行うことができることはたくさんあります - 代わりに、文字列の連結のあなたがより効率的にそれを作成するためにStringBuilderを使用することができます。

あなたが進むにつれてファイルにデータをストリーミングするもう1つのオプション - これは最もメモリ効率的な方法ですが、IO集中的にすることもできます。

ただし、FileHelpersを使用してCSVファイルを作成することをおすすめします。これは、CSVを正しく実装することが保証されている一般的なライブラリです(たとえば、フィールドにカンマが含まれている場合、コードで何が起こるかなど)。

0

結果セットをループしているときに、ファイルを書き込み用に開いて各行を書き込まないのはなぜですか?

これは、CSVファイルを作成する最も効率的な方法です。

関連する問題