2015年12月,XX项目中需要做一个数据导出功能,当时所有页面的到处功能均已经实现,但有个页面数据量太大,导出过程中导出页面直接卡死。不得已我准备选用ADO.NET来重新完成这个功能,因为考虑到越偏向底层操作速度越快这个逻辑,我选用从SqlCommand中直接读取数据,每两万条数据写一次文件,避免一次写入过多页面直接卡死,最后测试可以导出25G的数据,满足系统需求。

using System;
using System.Data;
using System.Data.SqlClient; public class ADO_NET
{
public ActionResult ExportData()
{
string sAbsolutePath = "xxx";
string FileName = string.Format("AQ_{0}.csv", DateTime.Now.ToString("yyyyMMddHHmmss")); try
{
FinCapDbContext db = DbContextFactory.GetCurrentContext();
SqlConnection conn = new SqlConnection(db.CurrentConnectionString);
conn.Open();
SqlCommand cmd = new SqlCommand("SQL Statement", conn);
cmd.CommandTimeout = ;
SqlDataReader sdr = cmd.ExecuteReader();
StreamWriter sw = new StreamWriter(sAbsolutePath + "\\" + FileName, false, Encoding.GetEncoding("GB2312"));
StringBuilder sb = new StringBuilder();
int k = ;
for (int m = ; m < sdr.FieldCount; m++)
{
sb.Append(sdr.GetName(m) + ",");
}
sb.Append(Environment.NewLine); while (sdr.Read())
{
k++;
for (int n = ; n < sdr.FieldCount; n++)
{
sb.Append(sdr[n] + ",");
}
sb.Append(Environment.NewLine); if (k > )
{
k = ;
sw.Write(sb.ToString());
sb.Length = ;
}
} if (k <= )
{
sw.Write(sb.ToString());
} sw.Flush();
sw.Close();
conn.Close();
return File(sAbsolutePath + "\\" + FileName, "application/zip-x-compressed", FileName);
}
catch
{
return File("xxx");
}
}
}

C# 利用ADO.NET导出大批量数据的更多相关文章

  1. 利用ADO.NET导出大批量数据

    2015年12月,XX项目中需要做一个数据导出功能,当时所有页面的到处功能均已经实现,但有个页面数据量太大,导出过程中导出页面直接卡死.不得已我准备选用ADO.NET来重新完成这个功能,因为考虑到越偏 ...

  2. Java 导出大批量数据excel(百万级)(转载)

    参考资料:http://bbs.51cto.com/thread-1074293-1-1.html                 http://bbs.51cto.com/viewthread.ph ...

  3. Java 使用stringTemplate导出大批量数据excel(百万级)

    目前java框架中能够生成excel文件的的确不少,但是,能够生成大数据量的excel框架,我倒是没发现,一般数据量大了都会出现内存溢出,所以,生成大数据量的excel文件要返璞归真,用java的基础 ...

  4. sql server导出大批量数据

    使用sqlserver导出数据的时候,如果数据量大于65536那么就要使用xlsx,最大行数为104万 如果导出的时候报错,则需要在本机安装以下程序: https://www.cnblogs.com/ ...

  5. 利用Aspose.Cells导出Datatable数据

    面对一些的格式各样的到处数据的要求,自学了一点 Aspose.Cells中操作Excel知识,如下代码: /// <summary> /// DataTable导出Excel /// &l ...

  6. SpringBoot图文教程10—模板导出|百万数据Excel导出|图片导出「easypoi」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...

  7. Java实现大批量数据导入导出(100W以上) -(二)导出

    使用POI或JXLS导出大数据量(百万级)Excel报表常常面临两个问题: 1. 服务器内存溢出: 2. 一次从数据库查询出这么大数据,查询缓慢. 当然也可以分页查询出数据,分别生成多个Excel打包 ...

  8. Java实现大批量数据导入导出(100W以上) -(一)导入

    最近业务方有一个需求,需要一次导入超过100万数据到系统数据库.可能大家首先会想,这么大的数据,干嘛通过程序去实现导入,为什么不直接通过SQL导入到数据库. 大数据量报表导出请参考:Java实现大批量 ...

  9. 大批量数据导出到Excel的实现

    在平时的项目中,将数据导出到Excel的需求是很常见的,在此对一些常见的方法做以总结,并提供一种大数据量导出的实现. OLEDB   使用OLEDB可以很方便导出Excel,思路很简单,处理时将Exc ...

随机推荐

  1. ZROI2018普转提day2t1

    传送门 分析 我们通过仔细研究不难发现对于一次交换(i,i+1)的操作之后,在i之前的点就不可能跑到i之后,i+1之后的的点也不可能跑到i+1之前,所以这个序列在一次交换之后就相当于被分成了两个部分. ...

  2. CH24C 逃不掉的路

    edcc缩点之后跳倍增lca 丢个edcc缩点模板 Code: #include <cstdio> #include <cstring> using namespace std ...

  3. HTML5应用程序缓存Application Cache详解.RP

    什么是Application Cache HTML5引入了应用程序缓存技术,意味着web应用可进行缓存,并在没有网络的情况下使用,通过创建cache manifest文件,可以轻松的创建离线应用. A ...

  4. java全栈day10--接口 多态

    接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样将功能的定义与 ...

  5. 探讨js闭包

    背景:爱就要大胆说出来,对于编程我只想说,喜欢就大胆写出来.喜欢却不行动那就意味着失败.所以,对于在研究编程的猿们,我对同伴们说,大胆的学,大胆的写.呵呵,说这些其实无非是给我自己点动力,写下去的勇气 ...

  6. 使用DDE传输数据至SQL Server

    DDE即是Dynamic Data Exchange,相关可以搜索MSDN在线帮助. 想把SPC-Light的数据传送至SQL Server中.刚开始是尝试了<Transfer data to ...

  7. meta常用命令

    sessions -i 1用于查看你控制的电脑

  8. day02.1-Linux虚拟操作系统的安装

    在windons环境中配置Linux虚拟操作系统,需要事先在Windons系统上下载并安装虚拟运行软件“VMware Workstations”,以下虚拟物理机的建立和虚拟Linux系统的配置都是在该 ...

  9. Js判断参数(String,Array,Object)是否为undefined或者值为空

    在一些前端控件要提交数据到服务器端的数据验证过程中,需要判断提交的数据是否为空.如果是普通表单的字符串数据,只需要在 trim 后判断 length 即可,而这里需要的数据可以是各种不同的类型,通过 ...

  10. ios swift 打造自己的http请求工具

    在ios开发中,网络请求是不可以少的,说到网络请求可能用的最多的就是第三方的比人比较有名的AFNetworking.Alamofire等,原生的用的少.今天就用ios提供的原生方法来打造属于自己的一个 ...