c# - 可以使用 Dapper 流式传输大型 SQL Server 数据库结果集吗?

标签 c# sql-server stream dapper

我需要从数据库返回大约 50 万行(请不要问为什么)。

然后我需要将这些结果保存为 XML(更多 URGH)并将此文件 ftp 到某个神奇的地方。

我还需要转换结果集中的每一行。

现在,这就是我正在做的事情 say .. TOP 100结果:

  • 使用 Dapper 的 Query<T>方法,将整个结果集扔进内存
  • 然后我使用 AutoMapper 将数据库 POCO 转换为我的 FileResult POCO
  • 转换为 XML
  • 然后将这个集合保存到文件系统
  • 然后是 FTP

这适用于 100 行,但在尝试将 500K 结果转换为新集合时,AutoMapper 出现内存不足异常。

所以,我想知道我是否可以这样做......

  • 使用 Dapper 从数据库流式传输数据
  • 对于每一行,自动映射它
  • 转换为 XML
  • 将结果流式传输到磁盘
  • <对每一行重复>
  • 现在将该文件 ftp 到 magic-land

我正试图停止将一切 扔进 RAM。我的想法是,如果我可以流式传输内容,内存效率会更高,因为我只处理单个结果数据集。

最佳答案

using Dapper's Query<T> method, which throws the entire result set into memory

做得很好,其中一个可选参数是 bool让你选择是否缓冲;p

只需添加 , buffer: false您现有的电话 Query<T> .

关于c# - 可以使用 Dapper 流式传输大型 SQL Server 数据库结果集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34169362/

相关文章:

c# - 如何避免在此 EF Core 查询中进行 SQL 注入(inject)?

c# - 如何创建自己的自定义 ToString() 格式?

c# - 将 DateTime 与数据库中存储的日期进行比较

c++ - 用 nullptr 交换流缓冲区来模拟移动?

c# - 有没有一种方法可以为一个接口(interface)编写测试,然后针对所有实现该测试的类对其进行测试?

c# - 在c#中查找已编译类的源文件

java - 为 jtds.jar 中的日期返回了错误的数据类型

sql-server - 我正在使用 fetch 和 offset 运行查询,但对相同的行为感到困惑

stream - 如何读取代号一中的流行

java - Flink Tumble Window 触发时间