2012-02-14 75 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文件的最有效方式。