我必须从SQL表中读取非常大的数据,大约300000行,并将其写入我的应用程序中的文本文件(.net应用程序并使用C#)。我有一个存储过程来读取该数据,我在我的代码中使用DataAdapter
和DataSet
来获取该数据,但我收到了错误
等待操作超时
执行dataAdapter.Fill(dataSet)
时。我试图改变超时值,但它没有用。我尝试了不同的方法,但似乎没有任何效果。它适用于几行,但它不适用于大数据。我无法抓取小数据,因为他们需要一个文本文件中的整个数据
答案 0 :(得分:1)
我做的第一个也是非常重要的改变 - 我将DateTime
对象更改为shortDate
(例如startDate.ToShortDateString()),因此它删除了我日期的时间部分,并帮助了使用datetime
param。
第二次更改---直接从SqlDataReader
阅读并使用Read
方法直接写入文本文件,因为DataTable
不会保留为长文件(例如420000KB)
using (SqlDataReader rdr = comm.ExecuteReader())
{
while (rdr.Read())
{
file.WriteLine(rdr.GetString(0), true);
}
}
第3次更改 - 我增加了超时
comm.CommandTimeout = 600; ( e.g for 10min)
答案 1 :(得分:0)
查看您是否可以将一个查询拆分为多个查询并同时执行,并在完成所有提取时加入结果。
甚至使用DataReader也会有帮助。