可能重複:
How to efficiently write to file from SQL datareader in c#?慢,大型SQL從C#/ ASP.NET查詢
我目前正在創建使用只讀訪問,以允許用戶在Web應用程序從我們的數據庫下載大文件。有問題的表中有400,000條記錄,並在導出時生成50 MB .csv文件。
大約需要7秒運行語句「SELECT * FROM [表]」 SQL服務器上,並約33S從我的web應用程序(託管在不同的服務器上),這樣做的。這是將所有數據讀取到System.Data.SqlClient.SqlDataReader對象中。
我的問題是,我在爲我的SqlDataReader對象轉換爲.csv文件丟失。將SqlDataReader的每一行轉換爲一個字符串並將該字符串逐行輸出到一個文件需要近2個小時,這是不可接受的。以下是我用於在Web應用程序的服務器上創建文件的代碼:
while (rdr.Read())
{
string lineout = "";
for (int index = 0; index < rdr.FieldCount; index++)
lineout += rdr[index].ToString().Replace(',', ' ') + ',';
write(lineout, filename); //uses StreamWriter.WriteLine()
}
必須有更好的方法。我環顧四周,看到很多建議,基本上建議做上述創建一個文件。這對於較小的桌子很有效,但不是我們每天使用的兩個非常大的桌子。任何人都可以給我一個正確的方向?
你確定它不是很慢的SQL嗎? – SLaks
http://stackoverflow.com/questions/9055521/how-to-efficiently-write-to-file-from-sql-datareader-in-c – samuelesque
假設你的服務器上運行這個?運行查詢時機器的性能如何反應?你在哪裏使用數據集? –