【发布时间】:2020-05-03 22:20:39
【问题描述】:
过去,我在将超过一百万行从 SQL Server 数据库加载到 DataTable 时得到了 System.OutOfMemoryException。是否真的不是填充DataTable,而是更快地例如以某种方式将其加载到CSV或除此之外的任何其他格式?请您的建议,最终给出建议/示例。
【问题讨论】:
-
这真的取决于你想要做什么。所有数据的最终目的地是什么?分析?另一个数据存储?你需要更具体。否则我们只能告诉你购买更多的内存?
-
DataTables 自多年前就已过时,因此请尽可能避免使用它们。此外,这意味着您将在内存中保存数据集的完整副本,因此最好直接使用SqlDataReader并将数据发送到其他地方。当然,一次选择数百万条记录有其自身的一系列问题,因此请尽可能限制它。 -
从数据库表中批处理行。这可能是一种选择。
-
@CodeMonkey 最后的目的地将是我已经用虚拟模式准备好的datagridview。所以我需要以某种方式从数据库中下载记录(肯定不是数据表),然后在 datagridview 中使用
-
@Alejandro 不幸的是,我必须下载数百万条记录用于分析目的,目的地是我在虚拟模式下配置的 datagridview,所以我需要避免将记录下载到 Datatable,但在其他地方然后使用datagridview,你可能建议用什么 csv 文件?
标签: c# sql-server