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");
}
}
}

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

  1. C# 利用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. 《python核心编程》读书笔记--第16章 网络编程

    在进行网络编程之前,先对网络以及互联网协议做一个了解. 推荐阮一峰的博客:(感谢) http://www.ruanyifeng.com/blog/2012/05/internet_protocol_s ...

  2. linux系统缓存机制

    http://my.oschina.net/lenglingx/blog/425258 1.缓存机制 为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读 ...

  3. css3 转换transfrom 过渡transition 和两个@

    做了一个demo.用到一些css3的动画,还是不太熟练,总结了一下.  1. -webkit-font-smoothing: antialiased;       -webkit-font-smoot ...

  4. Mysql-学习笔记(==》触发器 十一)

    -------触发器-------- USE db;SELECT FROM sss; CREATE TABLE sssbak LIKE sss;SHOW CREATE TABLE sss;SHOW C ...

  5. 扩展duilib edit控件的提示功能和多种文字颜色(解决edit为password显示不正常的bug)

    参考博客:Redrain 转载:http://blog.csdn.net/zhuhongshu/article/details/41786407 在Redrain博客的基础上做了修改 1.CEditU ...

  6. SqlSever基础 intersect 交集 两个查询结果共有的

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  7. SAP BASIS日常需要做的工作

    SAP Basis的一些日常工作包括用户权限管理.集团管理.数据库管理.后台作业.打印管理.系统监控.传输管理等. a. 用户权限管理: SU01—创建,修改,显示用户信息 SU10—批量修改用户 P ...

  8. 【leetcode❤python】27. Remove Element

    #-*- coding: UTF-8 -*- class Solution(object):    def removeElement(self, nums, val):        "& ...

  9. Ubuntu Linux 下文件名乱码(无效的编码)的快速解决办法

    文件是在WIndows 下创建的,Windows 的文件名中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码不一致所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码.文件 ...

  10. SQL语句最基本的性能优化方法

    有些人还不知道sql语句的基本性能优化方法,在此我简单提醒一下,最基本的优化方法:   1.检查是否缺少索引.调试的时候开启“包括实际的执行计划”   执行后会显示缺少的索引,   然后让dba帮助添 ...