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. 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-008排序算法的复杂度(比较次数的上下限)

    一. 1. 2.

  2. ZROI2018普转提day2t3

    传送门 分析 考试的时候sb了......我们发现可以按照先序遍历将一棵树变成一个序列,而不需要删的数的数量便是最长上升子序列的长度,但是还有一个问题就是如果在5和7之间有3个空的位置就无法填入合法的 ...

  3. ZROI2018提高day3t3

    传送门 分析 我们对于每一个可以匹配的字符都将其从栈中弹出,然后他的哈希值就是现在栈中的字符哈希一下.然后我们便可以求出对于哪些位置它们的哈希值是一样的,即它们的状态是一致的.而这些点可以求出它们的贡 ...

  4. JavaScript 学习中

    邮箱的验证: <!DOCTYPE html><html>    <head>        <meta charset="UTF-8"&g ...

  5. java全栈day05--ArrayList的基本功能

    在前面我们学习了数组,数组可以保存多个元素,但在某些情况下无法确定到底要保存多少个元素,此时数组将不再适用,因为数组的长度不可变.例如,要保存一个学校的学生,由于不停有新生来报道,同时也有学生毕业离开 ...

  6. 海量推荐系统:mapreduce的方法

    1. Motivation 2. MapReduce MapReduce是一种数据密集型并行计算框架. 待处理数据以"块"为单位存储在集群机器文件系统中(HDFS),并以(key, ...

  7. BCP导入导出

  8. angular 分页2

    http://www.alliedjeep.com/2547.htm AngularJS Code (Users.js) var Users = angular.module('Users', []) ...

  9. 关于eclipse导入maven项目

    1:删除其他的配置文件,只需要源码 和 pom文件 2:导入项目,再修改几个地方: 2.1: 所选项目右键- properties - Project Facet,勾上 Dynamic Web Mod ...

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

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