简要咨询咨询QQ网站导航网站搜索手机站点联系我们设为首页加入收藏 

将SQLServer结果导出为excel文件

来源:易贤网   阅读:2293 次  日期:2014-09-17 15:59:23

温馨提示:易贤网小编为您整理了“将SQLServer结果导出为excel文件”,方便广大网友查阅!

相信大家常常会遇到将SqlServer查询结果导出到Excel的问题。如果导出的次数少,直接“Save Results As...”就是了;但是当要分别在每个表取样,那就相当麻烦了。今天就为大家提供一个脱离office组件的可以将语句结果导出到Excel的过程,希望会对大家有帮助!

---导出到Excel

---使用说明:

-- 1.执行时所连接的服务器决定文件存放在哪个服务器

-- 2.远程查询语句中,要加上数据库名

ALTER PROC ExportFile

@QuerySql VARCHAR(max)

,@Server VARCHAR(20)

,@User VARCHAR(20)

,@Password VARCHAR(20)

,@FilePath NVARCHAR(100) = 'c:ExportFile.xls'

AS

DECLARE @tmp VARCHAR(50) = '[##Table' + CONVERT(VARCHAR(36),NEWID())+']'

BEGIN TRY

DECLARE @Sql VARCHAR(max),@DataSource VARCHAR(max)='';

--判断是否为远程服务器

IF @Server <> '.' AND @Server <> '127.0.0.1'

SET @DataSource = 'OPENDATASOURCE(''SQLOLEDB'',''Data

--将结果集导出到指定的数据库

SET @Sql = REPLACE(@QuerySql,' from ',' into + ' from ' + @DataSource)

PRINT @Sql

EXEC(@Sql)

DECLARE @Columns VARCHAR(max) = '',@Data NVARCHAR(max)=''

SELECT @Columns = @Columns + ',''' + name +''''--获取列名(xp_cmdshell导出文件没有列名)

,@Data = @Data + ',Convert(Nvarchar,[' + name +'])'--将结果集所在的字段更新为nvarchar(避免在列名和数据union的时候类型冲突)

FROM tempdb.sys.columns WHERE object_id = OBJECT_ID()

SELECT @Data = 'SELECT ' + SUBSTRING(@Data,2,LEN(@Data)) + ' FROM ' + @tmp

SELECT @Columns = 'Select ' + SUBSTRING(@Columns,2,LEN(@Columns))

--使用xp_cmdshell的bcp命令将数据导出

EXEC sp_configure 'xp_cmdshell',1

RECONFIGURE

DECLARE @cmd NVARCHAR(4000) = 'bcp "' + @Columns+' Union All ' + @Data+'" queryout ' + @FilePath + ' -c -T'

PRINT @cmd

exec sys.xp_cmdshell @cmd

EXEC sp_configure 'xp_cmdshell',0

RECONFIGURE

EXEC('DROP TABLE ' + @tmp)

END TRY

BEGIN CATCH

--处理异常

IF OBJECT_ID() IS NOT NULL

EXEC('DROP TABLE ' + @tmp)

EXEC sp_configure 'xp_cmdshell',0

RECONFIGURE

SELECT ERROR_MESSAGE()

END CATCH

更多信息请查看IT技术专栏

更多信息请查看数据库
点此处就本文及相关问题在本站进行非正式的简要咨询(便捷快速)】     【点此处查询各地各类考试咨询QQ号码及交流群
上一篇:sqlserver获取当前日期的最大时间值
下一篇:SQL Server中text或ntext 字段内容替换方法
易贤网手机网站地址:将SQLServer结果导出为excel文件
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!