【发布时间】:2013-12-03 22:02:23
【问题描述】:
我一直在努力解决这个问题。我正在编写一个程序来处理存储在 SQL 数据库中的服务器上的大量数据。一个包含 50 列的表中有数百万条记录。
我的程序做的第一件事是执行一个查询来检索一组这些数据。集合大小的范围可以从 500 条记录到 150 万条记录。 150 万是非常罕见的,但它可能会发生。目前我正在检索数据并将其存储在 DataTable 中,然后使用 EPPlus 将其导出到 excel。我开始用完大约 150,000 条记录的内存。完成整个任务大约需要 2-3 分钟。我相信我在填充 DataTable 时内存不足。
数据在 SQL 数据库中的服务器上,我们必须有一个导出的 excel 文件到我们的本地机器。必须继续满足这些标准。
我到底该怎么做呢?
编辑:这是一些示例代码。我还应该更新我不关心格式。
string query = "SELECT * FROM DB.dbo.Table WHERE [Client Name] = '" + clientName + "'";
System.Data.DataTable dt = new System.Data.DataTable();
using (SqlConnection sqlConn = new SqlConnection(connString))
{
using (SqlCommand cmd = new SqlCommand(query, sqlConn))
{
sqlConn.Open();
using (SqlDataReader myReader = cmd.ExecuteReader())
{
dt.Load(myReader);
sqlConn.Close();
}
}
}
我认为我需要在更大的情况下进行调整。正如你们中的许多人所说,不可能处理如此多的行。我将从整体上看另一种解决问题的方法。谢谢大家的帮助!
【问题讨论】:
-
Excel 电子表格有行数限制。 Excel 2003 为 65k,2010 为 1meg.. 不确定其他人。
-
不可能将超过 100 万条记录导出到 Excel。这是 Excel 在单个工作簿中允许的最多记录。
-
您能否包含一些代码,以便我们查看您当前在做什么?
标签: c# sql sql-server excel epplus