我必须从 SQL 中获取 DataTable,然后将其转换为 XML(我不能使用 SQL XML)并保存到文件中。问题是该文件将达到 5 GB,而我没有足够的内存来下载所有文件并在内存中一次将其全部转换为 XML。我知道我应该能够使用 DataReader 将数据以 block 的形式转换并推送到文件流,但我不知道如何真正做到这一点。我怎样才能做到以下几点?
- 异步连接到 SQL 服务器
- 异步调用存储过程
- 从DataReader异步读取数据
- 将数据从 DataReader 转换为 XML 并异步保存到文件
这一切都必须是异步的,因为它在处理多个请求的服务器上,我们不能为每个请求都阻塞一个线程。
最佳答案
为什么您需要异步执行任何操作?这可能会表现得更好,但会复杂得多。
简单的方法:
- 执行查询以获取 DataReader
- 创建一个写入文件的 XmlWriter
- 尝试读取一行
- 如果没有剩余的行,您就完成了。 (确保关闭编写器/连接等)
- 如果您确实得到了一行,将其写入 XmlWriter(添加一个元素或您需要做的任何事情)。
- 返回上一步。
关于sql - 在 .NET 中,将数据从 SQL 流式传输到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/470311/