• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >MsSql > SQL2005CLR函数扩展-数据导出的实现详解

SQL2005CLR函数扩展-数据导出的实现详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了sqlclr,铁三角clr100,clr,铁三角 ath-clr100,clr20r3等相关知识,希望本文的分享对您有所帮助
SQLServer数据导出到excel有很多种方法,比如dts、ssis、还可以用sql语句调用openrowset。我们这里开拓思路,用CLR来生成Excel文件,并且会考虑一些方便操作的细节。

下面我先演示一下我实现的效果,先看测试语句
--------------------------------------------------------------------------------
exec BulkCopyToXls 'select * from testTable' , 'd:/test' , 'testTable' ,- 1
/*
开始导出数据
文件 d:/test/testTable.0.xls, 共65534条 , 大小20 ,450,868 字节
文件 d:/test/testTable.1.xls, 共65534条 , 大小 20 ,101,773 字节
文件 d:/test/testTable.2.xls, 共65534条 , 大小 20 ,040,589 字节
文件 d:/test/testTable.3.xls, 共65534条 , 大小 19 ,948,925 字节
文件 d:/test/testTable.4.xls, 共65534条 , 大小 20 ,080,974 字节
文件 d:/test/testTable.5.xls, 共65534条 , 大小 20 ,056,737 字节
文件 d:/test/testTable.6.xls, 共65534条 , 大小 20 ,590,933 字节
文件 d:/test/testTable.7.xls, 共26002条 , 大小 8,419,533 字节
导出数据完成
-------
共484740条数据,耗时 23812ms
*/
--------------------------------------------------------------------------------
上面的BulkCopyToXls存储过程是自定的CLR存储过程。他有四个参数:
第一个是sql语句用来获取数据集
第二个是文件保存的路径
第三个是结果集的名字,我们用它来给文件命名
第四个是限制单个文件可以保存多少条记录,小于等于0表示最多65534条。

前三个参数没有什么特别,最后一个参数的设置可以让一个数据集分多个excel文件保存。比如传统excel的最大容量是65535条数据。我们这里参数设置为-1就表示导出达到这个数字之后自动写下一个文件。如果你设置了比如100,那么每导出100条就会自动写下一个文件。

另外每个文件都可以输出字段名作为表头,所以单个文件最多容纳65534条数据。

用微软公开的biff8格式通过二进制流生成excel,服务器无需安装excel组件,而且性能上不会比sql自带的功能差,48万多条数据,150M,用了24秒完成。
--------------------------------------------------------------------------------
下面我们来看下CLR代码。通过sql语句获取DataReader,然后分批用biff格式来写xls文件。
--------------------------------------------------------------------------------
           
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • SQL2005CLR函数扩展-深入环比计算的详解
  • SQL2005CLR函数扩展-数据导出的实现详解
  • SQL2005CLR函数扩展-解析天气服务的实现
  • SQL2005CLR函数扩展-繁简转换的实现代码
  • SQL2005CLR函数扩展 - 关于山寨索引

相关文章

  • 2017-05-11mssql 监控磁盘空间告警实现方法
  • 2017-05-11Linux编译mssql扩展使用php连接sqlserver2008的使用步骤
  • 2017-05-11sql2005 安装教程 图文
  • 2017-05-11SQL Server使用一个语句块批量插入多条记录的三种方法
  • 2017-05-11SqlServer2005 链接服务器用法
  • 2017-05-11SQL Server 2008 R2——查找最小nIndex,nIndex存在而nIndex+1不存在 求最小连续数组中的最大值
  • 2017-05-11SQL SERVER 2008数据库引擎详细介绍
  • 2017-05-11mssql数据库游标批量修改符合条件记录的方法
  • 2017-05-11SQL Server 2008 R2数据库镜像部署图文教程
  • 2017-05-11在登录触发器错误情况下连接SQL Server的方法

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • SQL Server 2008 清空删除日志文件(瞬间日志变几M)
    • SQL Server 2008+ Reporting Services (SSRS)使用USER登录问题
    • SQL Server 2008安装图解(详细)
    • SQL Server 2008怎样添加自增列实现自增序号
    • SQL Server 2005安装实例环境图解第1/2页
    • 简单有用的SQL脚本 (行列互转,查询一个表内相同纪录等)
    • 通过创建SQLServer 2005到 Oracle10g 的链接服务器实现异构数据库数据转换方案
    • Linux编译mssql扩展使用php连接sqlserver2008的使用步骤
    • Sql2005注射辅助脚本[粗糙版]
    • SQL Server 2008 数据库镜像部署实例之一 数据库准备

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有