原文:c#自带压缩类实现数据库表导出到CSV压缩文件的方法

在导出大量CSV数据的时候,常常体积较大,采用C#自带的压缩类,可以方便的实现该功能,并且压缩比例很高,该方法在我的开源工具DataPie中已经经过实践检验。我的上一篇博客《功能齐全、效率一流的免费开源数据库导入导出工具(c#开发,支持SQL server、SQLite、ACCESS三种数据库),每月借此处理数据5G以上》中有该工具的完整源码,有需要的同学可以看看。

在.net 4.5中,可以轻松创建zip文件 ,首先需要引入 System.IO.Compression.dll、System.IO.Compression.FileSystem.dll两个文件。其中ZipArchive 类表示一些压缩使用 Zip 文件格式的文件。ZipArchiveEntry 类表示单个 ZipArchive。ZipArchive 通常包含一个或多个 ZipArchiveEntry 实例。

DataPie中实现csv文件压缩导出的主要代码如下:

using System;
using System.Linq;
using System.Text;
using System.IO.Compression;
using System.Data;
using System.Diagnostics;
using System.IO;namespace DataPie.Core
{public class DBToZip{public static int DataReaderToZip(String zipFileName, IDataReader reader, string tablename){Stopwatch watch = Stopwatch.StartNew();watch.Start();using (FileStream fsOutput = new FileStream(zipFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite)){using (ZipArchive archive = new ZipArchive(fsOutput, ZipArchiveMode.Update)){ZipArchiveEntry readmeEntry = archive.CreateEntry(tablename + ".csv");using (StreamWriter writer = new StreamWriter(readmeEntry.Open(), Encoding.UTF8)){for (int i = 0; i < reader.FieldCount; i++){if (i > 0)writer.Write(',');writer.Write(reader.GetName(i) );}writer.Write(Environment.NewLine);while (reader.Read()){for (int i = 0; i < reader.FieldCount; i++){if (i > 0)writer.Write(',');String v = reader[i].ToString();if (v.Contains(',') || v.Contains('\n') || v.Contains('\r') || v.Contains('"')){writer.Write('"');writer.Write(v.Replace("\"", "\"\""));writer.Write('"');}else{writer.Write(v);}}writer.Write(Environment.NewLine);}}}}watch.Stop();return Convert.ToInt32(watch.ElapsedMilliseconds / 1000);}}
}

c#自带压缩类实现数据库表导出到CSV压缩文件的方法相关推荐

  1. python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...

    本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf- ...

  2. Oracle数据库表导出和导入csv文件操作

    Oracle数据库表导出和导入csv文件操作 数据库是Oracle 9i 1.导出csv文件 这个十分简单,用pl/sql工具即可,首先选中要导出的表,右键选择Query data,在左侧出现的窗口中 ...

  3. 根据实体类生成数据库表

    参考文档地址:通过实体类生成数据库表_weixin_44571808的博客-CSDN博客_java实体类生成数据库表 注意springboot版本号需要比较低(没有详细测试2.6不行,2.1.11可以 ...

  4. PostgreSQL将表导出为CSV(服务器端、客户机端)完整版

    如下使用COPY命令可将表内容导出到CSV文件. COPY (select id as COL_ID, name as COL_NAME from my_tab order by id) to 'D: ...

  5. python读取数据库数据、并保存为docx_Python从数据库读取大量数据批量写入文件的方法...

    Python从数据库读取大量数据批量写入文件的方法 使用机器学习训练数据时,如果数据量较大可能我们不能够一次性将数据加载进内存,这时我们需要将数据进行预处理,分批次加载进内存. 下面是代码作用是将数据 ...

  6. java 导出csv 格式,java导出csv格式文件的方法

    这篇文章主要为大家详细介绍了java导出csv格式文件的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 导出csv格式文件的本质是导出以逗号为分隔的文本数据 imp ...

  7. Python从数据库读取大量数据批量写入文件的方法

    今天小编就为大家分享一篇Python从数据库读取大量数据批量写入文件的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 使用机器学习训练数据时,如果数据量较大可能我们不能够一次性将 ...

  8. oracle数据库listener开启和关闭trace文件的方法

    linux下监听文件listener.ora在哪 一般在 $ORACLE_HOME/network/admin下面 可以用find 命令找一下:find $ORACLE_BASE -name list ...

  9. python批量读取文件内容_Python从数据库读取大量数据批量写入文件的方法

    使用机器学习训练数据时,如果数据量较大可能我们不能够一次性将数据加载进内存,这时我们需要将数据进行预处理,分批次加载进内存. 下面是代码作用是将数据从数据库读取出来分批次写入txt文本文件,方便我们做 ...

最新文章

  1. 约瑟夫环 单向循环链表实现
  2. 计算机视觉之OpenCV教程 ---Mat类基础(一)
  3. 华为访问列表traffic-policy案例
  4. linux连接建立的时间,用timedatectl在Linux中检查当前时区及更改时区(创建符号链接来更改时区)...
  5. lisp将图元追加选择_汕尾幸运儿喜爱大乐透 两次买彩票就擒获8注追加二等奖254万元...
  6. GIS-004-Cesium版权信息隐藏
  7. Python爬虫进阶七之设置ADSL拨号服务器代理
  8. 生物信息学常用数据库
  9. 第十一章.软件工程(上)
  10. 合法免费下载电子书的站点整理收藏
  11. 知乎上看到的关于异步双核的解释
  12. python主进程 子进程_Python关闭主进程时关闭子进程
  13. python中 round函数的使用
  14. 日本互联网的十大知名巨头!你听说过几个?
  15. 【LintCode 题解】小米面试算法题:搜索旋转排序数组
  16. 软件工程 - 个人主页 - 可行性分析与需求分析文档
  17. *6-1 CCF 2015-03-2 数字排序
  18. 阿里云网站备案申请被驳回的问题解答汇总
  19. 2.5寸硬盘和3.5寸硬盘的区别和适用场景
  20. 抗阿达木单抗的抗体可能与阿达木单抗治疗过程中静脉和动脉血栓事件相关

热门文章

  1. oracle 复制数据 insert into、as select
  2. 带你通俗理解https
  3. 分享:苹果APP更新上架被拒的另一种理由(Safety - Objectionable Content)
  4. DBA+北京社群第三次线下沙龙归来
  5. 一.oracle的SQL中group by使用的情况(与聚合函数的关系)
  6. C#: using JsonReader avoid Deserialize Json to dynamic
  7. Tomcat--远程Debug以及参数配置调优
  8. Linux如何查看所有的用户和组信息
  9. Flask 的 template模板 与 jinja2语法
  10. 16.What is pass in Python?