将大型结果集保存到多个XML文件

时间:2016-06-07 21:40:26

标签: c# sql xml ado.net

我有一个存储过程,返回一个大的结果集(近2000万条记录)。我需要将此结果保存到多个XML文件中。我目前正在使用ADO.Net来填充数据集,但它会快速抛出System.OutOfMemoryException。我可以用什么方法来实现这个目标?

2 个答案:

答案 0 :(得分:1)

您使用的是sql server吗?

在这种情况下,有一条sql指令可以自动将查询结果转换为xml结构,然后在应用程序中将其作为字符串获取。

选项:

  • 您将字符串拆分为多个并将其保存到文件中(在应用程序中)

  • 修改PS以将结果拆分为多个xml对象,然后将它们作为不同的字符串/行(1行=> 1个对象)并将它们保存到文件中。

  • 编写一个调用原始PS的新PS,将结果拆分为X xml对象,然后返回您只需要保存在应用程序中的X xml字符串

不使用sql server?

在PS中进行XML格式化或编写新的格式

无论如何,如果认为更容易做xml格式化服务器端

答案 1 :(得分:1)

假设您使用的是SQL Server - 您可以在存储过程中使用分页。 ROW_NUMBER是一种选择。 SQL Server 2012及更高版本支持OFFSET and FETCH

此外,您填写了多少个DataTable? DataTables有行限制。

  

DataTable可以存储的最大行数是16,777,216

https://msdn.microsoft.com/en-us/library/system.data.datatable.aspx