数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Sql Server 数据库表查询结果导出为excel文件


发布日期:2020年09月21日
 
Sql Server 数据库表查询结果导出为excel文件

相信大家常常会遇到将SqlServer查询结果导出到Excel的问题如果导出的次数少直接“Save Results As”就是了;

准备好查询语句

选择数据库启动导入和导出向导

选择数据源

选择目标

后续步骤不再附图一直点“下一步”按钮就好

但是当要分别在每个表取样那就相当麻烦了今天就为大家提供一个脱离office组件的可以将语句结果导出到Excel的过程希望会对大家有帮助!

导出到Excel

使用说明

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

远程查询语句中要加上数据库名

ALTER PROC ExportFile

@QuerySql VARCHAR(max)

@Server VARCHAR()

@User VARCHAR()

@Password VARCHAR()

@FilePath NVARCHAR() = c:ExportFilexls

AS

DECLARE @tmp VARCHAR() = [##Table + CONVERT(VARCHAR()NEWID())+]

BEGIN TRY

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

判断是否为远程服务器

IF @Server <> AND @Server <>

SET @DataSource = OPENDATASOURCE(SQLOLEDBData Source=+@Server+;User ID=+@User+;Password=+@Password+)

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

SET @Sql = REPLACE(@QuerySql from into +@tmp+ 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 tempdbsyscolumns WHERE object_id = OBJECT_ID(tempdb+@tmp)

SELECT @Data = SELECT + SUBSTRING(@DataLEN(@Data)) + FROM + @tmp

SELECT @Columns = Select + SUBSTRING(@ColumnsLEN(@Columns))

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

EXEC sp_configure xp_cmdshell

RECONFIGURE

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

PRINT @cmd

exec sysxp_cmdshell @cmd

EXEC sp_configure xp_cmdshell

RECONFIGURE

EXEC(DROP TABLE + @tmp)

END TRY

BEGIN CATCH

处理异常

IF OBJECT_ID(tempdb+@tmp) IS NOT NULL

EXEC(DROP TABLE + @tmp)

EXEC sp_configure xp_cmdshell

RECONFIGURE

SELECT ERROR_MESSAGE()

END CATCH

先不要着急使用该版本是基于xp_cmdshell的因为要创建文件所以要保证你的用户能有文件管理的权限通常简单点的方法就是将sql server的启动用户设置为本地系统用户

好了现在我们来执行看看

查询分析器连接哪个服务器文件就在哪个服务器上

本地导出

EXEC dboExportFile @QuerySql = select * from sysobjects varchar(max)

@Server = varchar()

@FilePath = Nc:objectsxls nvarchar()

远程导出

EXEC dboExportFile @QuerySql = select * from mastersysobjects varchar(max)

@Server = varchar()

@User = sa varchar()

@Password = sa varchar()

@FilePath = Nc:objectsxls nvarchar()

执行结果如下显示导出条数就没有报错再看看你的C盘多了个文件就大功告成了

               

上一篇:sql server取出内容中汉字,数字,字母

下一篇:SQL Server远程连接出错的解决方法