sql - 在 .NET 中,将数据从 SQL 流式传输到文件

标签 sql asynchronous

我必须从 SQL 中获取 DataTable,然后将其转换为 XML(我不能使用 SQL XML)并保存到文件中。问题是该文件将达到 5 GB,而我没有足够的内存来下载所有文件并在内存中一次将其全部转换为 XML。我知道我应该能够使用 DataReader 将数据以 block 的形式转换并推送到文件流,但我不知道如何真正做到这一点。我怎样才能做到以下几点?

  1. 异步连接到 SQL 服务器
  2. 异步调用存储过程
  3. 从DataReader异步读取数据
  4. 将数据从 DataReader 转换为 XML 并异步保存到文件

这一切都必须是异步的,因为它在处理多个请求的服务器上,我们不能为每个请求都阻塞一个线程。

最佳答案

为什么您需要异步执行任何操作?这可能会表现得更好,但会复杂得多。

简单的方法:

  • 执行查询以获取 DataReader
  • 创建一个写入文件的 XmlWriter
  • 尝试读取一行
    • 如果没有剩余的行,您就完成了。 (确保关闭编写器/连接等)
    • 如果您确实得到了一行,将其写入 XmlWriter(添加一个元素或您需要做的任何事情)。
  • 返回上一步。

关于sql - 在 .NET 中,将数据从 SQL 流式传输到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/470311/

相关文章:

javascript - AJAX 异步响应回调

sql - 恢复数据库失败?

sql - Volusion 的通用 SQL 文件夹、功能

sql - 如何使用特定格式交换名字和姓氏

javascript - 如何从异步调用返回响应?

spring - 在 Spring 中超时 Controller /方法的执行时间

c# - 任务并行库 - Task.Delay() 用法

mysql - SQL表中的数据如何分离

sql - 为什么不能使用 SQLite ROWID 作为主键?

ios - 如何在 Swift 中实现异步/等待?