将数据从 MS Sql Server 存储过程导出到 excel 文件

Posted

技术标签:

【中文标题】将数据从 MS Sql Server 存储过程导出到 excel 文件【英文标题】:export data from MS Sql Server store procedure to excel file 【发布时间】:2014-12-16 13:39:33 【问题描述】:

我有一个任务,那就是我想将数据从 MS Sql Server 存储过程导出到不同工作表中的 excel 文件。(同一个 excel 文件中的不同工作表)格式像方向是横向,每个列值之后的分页符一张excel表等

最后通过电子邮件发送了那个 excel 文件。

请建议哪种方法适合这项任务。 s-s-rS、SSIS 封装或创建 Sore 程序的概念。 请建议任何链接或任何示例来完成此任务。

现在我正在手动执行此任务,因此我需要通过自动化完成此任务。 请帮助和建议。

【问题讨论】:

【参考方案1】:

使用 SSIS,可以将数据导出到 excel

来源:OLEDB 来源 目的地:执行目的地

创建并部署包后,在 SQL Server 代理中进行计划。

【讨论】:

【参考方案2】:

你可以看看这里

https://www.simple-talk.com/sql/database-administration/creating-csv-files-using-bcp-and-stored-procedures/

本文使用批量复制程序 (BCP) 创建 CSV 文件。虽然可以使用 DTS 或 SSIS 创建 CSV 文件,但使用 BCP 通常更简单、更高效。

我使用 master..sysobjects 作为示例表来提取。

创建一个简单的 CSV 文件

将数据从数据库表复制到文件的最简单方法是使用基本 BCP 命令:

BCP master..sysobjects out c:\sysobjects.txt -c -t, -T –S 用于创建 CSV 文件的 BCP 命令的基本格式如下:

BCP 输出

这里使用的开关是:

-c Output in ASCII with the default field terminator (tab) and row terminator (crlf)
-t override the field terminator with ","
-T use a trusted connection. Note that U –P may be used for username/password
-S connect to this server to execute the command

请注意,与 DTS/SSIS 一样,BCP 是一个客户端实用程序,因此您需要提供连接信息。

对于 SQL 服务器之间的数据传输,使用 -n 或 -N 代替 -c 来表示本机数据格式(-N = Unicode)。这要快得多,并且避免了数据转换问题。 BCP命令的完整格式请参考之前的BOL链接。

由于 BCP 是一个命令行实用程序,它使用 xp_cmdshell 从 T-SQL 执行。在你的 c: 驱动器上创建一个名为 BCP 的目录并执行:

declare @sql varchar(8000)select @sql = 'bcp master..sysobjects out 
c:\bcp\sysobjects.txt -c -t, -T -S'+ @@servernameexec master..xp_cmdshell @sql

【讨论】:

【参考方案3】:

s-s-rS 可能是实现您所追求的最简单的方法。您可以使用分组将 Excel 输出分成单独的工作表,如下所述:

Reporting Services export to Excel with Multiple Worksheets

设置报告后,您可以设置数据驱动订阅,该订阅将根据预定时间表定期发送文件:

http://msdn.microsoft.com/en-GB/library/ms159150(v=sql.105).aspx

【讨论】:

【参考方案4】:

s-s-rS 支持导出到多个 Excel 工作表。这是一个链接,它解释了如何:http://technet.microsoft.com/en-us/library/dd255278.aspx

如果您知道电子邮件地址并且在任务期间不应从数据库中检索它,您还可以创建标准订阅以发送电子邮件。

另一种选择是使用第 3 方工具。它支持多种报告类型,包括 s-s-rS 和对存储过程的直接调用。您可以查看此视频的前几分钟以了解其工作原理:http://www.r-tag.com/Pages/Preview_Demo.aspx

该工具不是免费的,但可以让您在大约一分钟内设置、运行或安排任务。此工具的优点之一是能够格式化 excel 文件,因此您可以设置例如将数据导出为带有摘要和过滤器的 Excel 表。您还可以以不同的方式呈现数据:分组、透视等。该工具支持 s-s-rS 的数据驱动订阅。 @SQLDiver 建议使用它来发送电子邮件,但数据驱动订阅仅在 SQLServer Enterprise 中可用,价格昂贵。如果您需要数据驱动的报告,此工具可能是企业版的廉价替代品。所以这取决于你的需求。如果您只有一个这样的任务,那么基于 s-s-rS 或 SSIS 的解决方案会更便宜,并且可能是更好的选择。如果您计划将来有多个任务,您需要特殊格式或者您需要数据驱动的订阅,可能值得检查 3rd 方工具位于上面提到的那个。

【讨论】:

以上是关于将数据从 MS Sql Server 存储过程导出到 excel 文件的主要内容,如果未能解决你的问题,请参考以下文章

将存储过程从 MS SQL Server 转换为 Informix

从 MS SQL SERVER 和 MS ACCESS 调用存储过程的结果之间的差异

Sqlcmd使用SQL Server存储过程将数据导出到csv

MS SQL Server 位列导出为布尔值

SQL Server - 将存储过程从一个数据库复制到另一个数据库

将 MS SQL Server 查询结果导出到 MS Access