如何通过Web API快速导出大量数据

时间:2016-04-16 13:38:38

标签: c# csv export entity-framework-6

我在客户端使用ASP.NET Web API 2(.NET 4.6.1)和AngularJS。我的要求是以CSV或Excel格式导出表格数据。出于安全原因,我无法使用bcp或sqlcmd。此外,不能使用DTS包,因为参数将来自Web UI,我需要将其传递给存储过程以检索结果并通过api发回文件。

目前,我正在尝试使用实体框架6读取所有500K记录到IEnumerable类型。我的表有大约500K记录,有40多列。我试图将其转换为CSV,然后以纯文本形式返回,并在浏览器中以blob格式打开。

问题:

  1. 有没有更好的方法可以在几秒钟内导出和返回数据。
  2. 如果IEnumberable为CSV是唯一的方法,那么我应该首先写文件并返回文件或返回纯文本作为来自web api的响应。
  3. 我尝试过很少来自网络的代码将IEnumerable转换为CSV(使用String.Join和StringBuilder并且没有效果。感谢,如果有人可以分享大数据如何快速转换为CSV或其他方式导出数据

1 个答案:

答案 0 :(得分:0)

我不认为它会如此快速地工作,因为我们正在查看(大致)您首先从数据库中提取的200MB数据集,然后将其发送到客户端。您可以尝试使用DotNetZip库来压缩CSV,然后再嘲笑客户端......