2012-02-14 117 views
0

我有一個應用程序將sql數據集保存爲csv文件。我讀取數據,將每行保存成一個字符串,然後將字符串保存到文本文件中。問題是有超過25k行,處理需要很長時間。有沒有更快的方法來做到這一點?SQL使用.Net導出爲CSV文件

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更有效地創建它。

另一種選擇是將數據流式傳輸到文件中 - 這是最有效利用內存的方式,儘管可能會導致更多的IO密集。

但我建議使用FileHelpers來創建CSV文件。它是一個流行的庫,保證正確實現CSV(例如,如果某個字段包含逗號,代碼會發生什麼情況?)。

0

爲什麼不打開文件準備寫入並在循環結果集時寫入每一行?

這是創建CSV文件的最有效方式。