sqlserver利用存储过程批量导出excel

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: sqlserver利用存储过程批量导出excel
begin
DECLARE @shenfenzheng VARCHAR(20)
declare @file_path varchar(200);--导出EXCEl文件的路径;
declare @file_name varchar(200);--导出EXCEl的文件名;
declare @exec_sql  varchar(8000);--SQL语句;
declare @exec_sql2 varchar(8000);--SQL语句;
set @file_path = 'C:\123\'
DECLARE order_cursor CURSOR 
FOR SELECT cardnum FROM mdjhz.dbo.dealngUser
OPEN order_cursor
fetch next from order_cursor into @shenfenzheng
while @@fetch_status<>-1
IF ISNULL(@shenfenzheng,'')<>''
begin
set @file_name = @shenfenzheng+'.xls'
set @exec_sql = 'select CONVERT(varchar(10),V.Vouchdate,120) ''日期'',D.dealuserName ''客户'',''''''''+D.cardnum ''身份证号'',D.address,D.jyxm,(select username from mdzjhz.dbo.tbuser2 u2 where u2.userlogo2=v.dealingcharacterid) ''组织机构'',(select VouchTypename from mdzjhz.dbo.VouchType where VouchTypeID=V.VouchTypeID) as ''单证类型'',(select operationname from mdzjhz.dbo.operationtype where operationlogo=v.operationid) ''业务明细'' ,V.principal ''金额'',(select statename from mdzjhz.dbo.Vouchstate where state=V.state) as ''状态'' , V.creditVouchID ''单证编号'',V.creditoperationID ''业务编码'',''''''''+V.bankAccount ''卡号'' from mdzjhz.dbo.creditVouch V,mdzjhz.dbo.dealingUser D where V.dealinglogo=D.dealuserlogo and V.state <>0 and ((V.VouchDate >='''' or ''''='''') and (V.VouchDate <'''' or ''''='''')) and V.creditVouchID like ''%%'' and V.creditoperationID LIKE ''%%''  and ((select statename from mdzjhz.dbo.Vouchstate where state=V.state) = ''--显示全部--'' or ''--显示全部--''=''--显示全部--'')    and ((select VouchTypename from mdzjhz.dbo.VouchType where VouchTypeID=V.VouchTypeID) = ''--显示全部--'' or ''--显示全部--''=''--显示全部--'') and ((select operationname from mdzjhz.dbo.operationtype where operationlogo=v.operationid)= ''--显示全部--'' or ''--显示全部--''=''--显示全部--'') and (D.cardnum like '''+@shenfenzheng+''') and ((select officename from mdzjhz.dbo.office where officelogo=V.officelogo)=''--显示全部--'' or ''--显示全部--''=''--显示全部--'')  and isnull((select username from mdzjhz.dbo.tbuser2 u2 where u2.userlogo2=v.dealingcharacterid),'''') like ''%%''  order by V.VouchDate'
set @exec_sql2 = ' bcp "'+@exec_sql+'" queryout "'+@file_path+''+@file_name+'" -c -T -S "PC-2020030906\DDD" -U "sa" -P "123456"';
exec master..xp_cmdshell @exec_sql2
---waitfor time '0:0:1'
fetch next from order_cursor into @shenfenzheng
---waitfor delay '0:0:0.5'
end
else
begin
fetch next from order_cursor into @shenfenzheng
end
close order_cursor
deallocate order_cursor
end
go

总结:


1、因为C盘为固态硬盘,写入速度应该快,其实经过测试并没发现快。写入c盘的话,需要把赋予everyone的文件夹写权限。


2、cardnum查询出来的身份证号码有40000+,写excel时,到了900多条ssms就卡死了。不知道啥原因。


3、第一次用存储过程,sql语句必须用单引号包含起来,语句中的原有单引号,需要使用两个单引号替换(不是双引号)。


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
21天前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第18天】SQL Server 存储过程具有提高性能、增强安全性、代码复用和易于维护等优点。它可以减少编译时间和网络传输开销,通过权限控制和参数验证提升安全性,支持代码共享和复用,并且便于维护和版本管理。然而,存储过程也存在可移植性差、开发和调试复杂、版本管理问题、性能调优困难和依赖数据库服务器等缺点。使用时需根据具体需求权衡利弊。
|
1天前
|
Java API Apache
|
5天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
16 4
|
9天前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
|
16天前
|
存储 SQL 缓存
SQL Server存储过程的优缺点
【10月更文挑战第22天】存储过程具有代码复用性高、性能优化、增强数据安全性、提高可维护性和减少网络流量等优点,但也存在调试困难、移植性差、增加数据库服务器负载和版本控制复杂等缺点。
|
19天前
|
存储 SQL 数据库
Sql Server 存储过程怎么找 存储过程内容
Sql Server 存储过程怎么找 存储过程内容
23 1
|
22天前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第17天】SQL Server 存储过程是预编译的 SQL 语句集,存于数据库中,可重复调用。它能提高性能、增强安全性和可维护性,但也有可移植性差、开发调试复杂及可能影响数据库性能等缺点。使用时需权衡利弊。
|
23天前
|
前端开发 JavaScript Java
导出excel的两个方式:前端vue+XLSX 导出excel,vue+后端POI 导出excel,并进行分析、比较
这篇文章介绍了使用前端Vue框架结合XLSX库和后端结合Apache POI库导出Excel文件的两种方法,并对比分析了它们的优缺点。
183 0
|
4天前
|
存储 SQL NoSQL
|
30天前
|
存储 SQL 关系型数据库
MySql数据库---存储过程
MySql数据库---存储过程
30 5