SQL Server SQL Server 大数据导出到 Excle 中

xinggang · 2016年11月22日 · 69 次阅读

应用场景:在实施考勤系统时遇到了需要将近百万的数据导出到 Excel 表的需求,在目前 WinForm 平台上实现这个有些困难,数据经过应用层 IIS 再转到客户端在 Grid 中加载就耗费好几分钟,甚至会报错最终无法导出,经过研究找到一种快速高效的将大数量导出 Excel 的方法,好东东一起分享。

-- *********************************************
-- 名称: SQL Server 数据导出到 Excle 中
-- 维护: 邢港
-- 日期: 2016/11/21
-- 描述: 此方式适用于将大量数据导出到服务器的Excel文件中
-- *********************************************

--先开启xp_cmdshell
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'xp_cmdshell',1
reconfigure
go

--执行以下语句即可导出数据(此方法无法导出表头)
exec master..xp_cmdshell 'bcp Demo.dbo.Att_Record out c:\Temp.xls -c -q -S"." -U"sa" -P"密码"'
exec master..xp_cmdshell 'bcp "SELECT top 10 * FROM Demo.dbo.Att_Record" queryout "\\10.29.99.1\个人文档\邢\Temp6.xls" -c -q -S"." -U"sa" -P"密码"'

--如果报错找不到bcp,请设置系统环境变更Path中增加:C:\Program Files\Microsoft SQL Server\110\Tools\Binn

--如果要导出到局域网,请先添加信任链接映射,导出后删除映像(以下任选一种)
exec master..xp_cmdshell 'net use \\10.29.99.1\个人文档\邢港 密码 /user:10.29.99.1\xg'
exec master..xp_cmdshell 'net use \\10.29.99.1\个人文档\邢港 "密码" /USER:xg'
exec master..xp_cmdshell 'net use k: \\10.29.99.1\个人文档\邢港 密码 /user:10.29.99.1\xg' --映射到K盘

--刪除映射(选择对应上面映射的方式)
exec master..xp_cmdshell 'net use k: /delete'
exec master..xp_cmdshell 'net use \\10.29.99.1\个人文档\邢港 /delete'
经过测试,80万行数据导出在10秒以内搞定。
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册