sqlserver分类导出数据

sqlserver分类导出数据

ID:34725946

大小:67.68 KB

页数:4页

时间:2019-03-10

sqlserver分类导出数据_第1页
sqlserver分类导出数据_第2页
sqlserver分类导出数据_第3页
sqlserver分类导出数据_第4页
资源描述:

《sqlserver分类导出数据》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、SQLServer分类导出数据摘要:本文对sqlserve数据库中的数据分类导出至excel文件进行了研究,通过xp_cmdshell存储过程与bcp的分析与使用,提出了简单有效的解决办法。关键字:bcp;分类导出;queryout;sqlserver引言在实际应用中,常常需要将sqlserve数据库中的数据导出至excel中。将表中全部数据、按条件将部分数据导出至excel非常简单,但要将sqlserver表中数据按条件分类批量导出为多个excel文件就不那么简单了。例如:有一学生表(学号,姓名,系名,

2、班级名,课程名称,成绩),现要按学号分类导出数据,每个学生为一类生成一个xls文件,若全校有一万三千名学生,就要分一万三千类,并生成一万三千个xls文件。如果我们一个个查询导出,工作量巨大,效率也低。为此,我们今天将研究bcp导出方法,采用while循环查询解决此问题。2、准备工作bcp是sqlserver中负责导入导出数据的一个命令行工具,它是基于db-library的,并且能以并行的方式高效地导入导出大批量的数据。此次研究,我们将调用sqlserver的一个系统存储过程xp_cmdshell以sql语

3、句的方式运行bcp。bcp由四个动作组成,in为导入,out为导出,queryout为使用sql语句导出,format为导出格式文件。在这里,我们的数据源是sql语句,故使用queryout导出。扩展存储过程xp_cmdshell是一个功能非常强大的扩展存贮过程,可以让系统管理员以操作系统命令行解释器的方式执行给定的命令字符串。一般情况下,管理员会将xp_cmdshell禁用。在这里,我们先要将xp_cmdshell启用:usemasterexecsp_addextendedprocn’xp_cmdshe

4、ll’,n’xplog70.dll’go3、具体实现使用bcp命令导出的语法格式为:bcp”查询命令”queryout“xls文件保存路径”–c–u“登录名”–p“密码”在命令窗口输入以下的命令:--定义两个变量,@sql用来保存要运行的bcp命令,@xue用来保存用来分类的学号declare@sqlvarchar(600),@xueint--@xue取得最小的学号select@xue=min(学号)fromstud.dbo.学生表--如果学生表中存在此学号的学生时进行如下处理whileexists(se

5、lect*from学生表where学号=@xue)begin--先在xls文件中添加列名set@sql=‘bcp“select‘+’’’学号’’’+’as学号,’+’’’姓名’’’+’as姓名,’+’’’系名’’’+’as系名,’+’’’班级名’’’+’as班级名,’+’’’课程名称’’’+’as课程名称,’+’’’成绩’’’+’as成绩’--使用联合查询将满足条件的记录(该学号对应学生的信息)也添加至xls文件中set@sql=@sql+’unionallselect学号,姓名,系名,班级名,课程名称,

6、成绩fromstud.dbo.学生表where学号=‘+cast(@xueasvarchar(8))+’”queryout“f:’+cast(@xueasvarchar(8))+’.xls”-c-u“sa”-p“123”‘--调用xp_cmdshell运行bcp命令execmaster..xp_cmdshell@sql--获取下一个学生的学号赋值给@xueselect@xue=isnull(min(学号),@xue+1)fromstud.dbo.学生表where学号>=@xue+1end在书写命令时应注

7、意以下几点:表名要使用“数据库名.所有者名.表名”的形式,否则会出错。所以,命令中的“学生表”正确的写法为“stud.dbo.学生表”。要区分大小写。-c为小写,-u为大写,-p为大写。xls文件保存路径、查询命令这两项必须用双引号括起来。所有特殊符号都必须在英文状态下输入。bcp导出数据是不带字段名的,为了将字段名也导出至excel中,并且能正确导出,必须将要导出的字段全部转为字符型,否则即使你的命令和上面的一模一样,也会出现如下错误。最终,每个学号对应一个xls文件,运行结果如下图所示:打开“7080

8、1.xls”文件,结果如下图所示:4、结束语将sqlserver表中数据分类批量导出为多个excel文件是具有实际意义的,在平常的操作中使用广泛。如超市中,要按季度分类将不同季度的数据存放至不同的excel文件中,又如按班级分类分班存储学生个人信息至不同excel文件中……此方法简单易懂,符合实际需要。注:文章内所有公式及图表请以pdf形式查看。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。