我有一个将sql数据集保存到csv文件的应用程序。我读取数据,将每行保存到一个字符串中,然后将字符串保存到文本文件中。问题是行数超过25,000,处理时间很长。有更快的方法吗?
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;
}
答案 0 :(得分:1)
有许多事情可以做 - 而不是字符串连接,您可以使用StringBuilder
更有效地创建它。
另一种选择是在你进行时将数据流传输到文件 - 这是最节省内存的方式,但可能会更加IO密集。
但我建议使用FileHelpers
来创建CSV文件。这是一个受欢迎的库,可以保证正确实现CSV(例如,如果字段包含逗号,您的代码会发生什么?)。
答案 1 :(得分:0)
为什么不打开文件准备写入并在循环结果集时写入每一行?
这是创建CSV文件的最有效方式。