1、 将 SQLServer 结果导出为 excel 文件相信大家常常会遇到将 SqlServer 查询结果导出到 Excel 的问题。如果导出的次数少,直接“Save Results As”就是了; 但是当要分别在每个表取样,那就相当麻烦了。今天就为大家提供一个脱离 office 组件的可以将语句结果导出到 Excel 的过程,希望会对大家有帮助 !-导出到 Excel-使用说明:- 1.执行时所连接的服务器决定文件存放在哪个服务器- 2.远程查询语句中,要加上数据库名ALTER PROC ExportFileQuerySql VARCHAR(max),Server VARCHAR(20),Us
2、er VARCHAR(20),Password VARCHAR(20),FilePath NVARCHAR(100) = c:ExportFile.xlsASDECLARE tmp VARCHAR(50) = #Table + CONVERT(VARCHAR(36),NEWID()+BEGIN TRYDECLARE Sql VARCHAR(max),DataSource VARCHAR(max)=;-判断是否为远程服务器IF Server . AND Server 127.0.0.1SET DataSource = OPENDATASOURCE(SQLOLEDB,Data -将结果集导出到指定
3、的数据库SET Sql = REPLACE(QuerySql, from , into + from + DataSource)PRINT SqlEXEC(Sql)DECLARE Columns VARCHAR(max) = ,Data NVARCHAR(max)=SELECT Columns = Columns + , + name +-获取列名 (xp_cmdshell 导出文件没有列名),Data = Data + ,Convert(Nvarchar, + name +)-将结果集所在的字段更新为 nvarchar(避免在列名和数据 union 的时候类型冲突 )FROM tempdb.
4、sys.columns WHERE object_id = OBJECT_ID()SELECT Data = SELECT + SUBSTRING(Data,2,LEN(Data) + FROM + tmpSELECT Columns = Select + SUBSTRING(Columns,2,LEN(Columns)-使用 xp_cmdshell 的 bcp 命令将数据导出EXEC sp_configure xp_cmdshell,1RECONFIGUREDECLARE cmd NVARCHAR(4000) = bcp “ + Columns+ Union All + Data+“ queryout + FilePath + -c -TPRINT cmdexec sys.xp_cmdshell cmdEXEC sp_configure xp_cmdshell,0RECONFIGUREEXEC(DROP TABLE + tmp)END TRYBEGIN CATCH-处理异常IF OBJECT_ID() IS NOT NULLEXEC(DROP TABLE + tmp)EXEC sp_configure xp_cmdshell,0RECONFIGURESELECT ERROR_MESSAGE()END CATCH