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

我有一个任务,那就是我要把数据从MS Sql Server存储过程导出到不同的表格中(在同一个excel文件中不同的表格),如格式化为横向格式,在Excel的A列的每个值后分页表单等

最后是通过电子邮件发送的excel文件。

请build议哪种方法适合这项任务。 SSRS,SSIS包或创buildSore程序概念。 请build议任何链接或任何示例来完成此任务。

现在我手动执行这个任务,所以我需要通过自动化来完成这个任务。 请帮助和build议。

使用SSIS,可能的出口数据优秀

来源:OLEDB SOURCE目标:执行灭绝

一旦创build和部署包,安排在SQL Server代理。

你可以看看这里

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

本文使用批量复制程序(BCP)创buildCSV文件。 尽pipe可以使用DTS或SSIS创buildCSV文件,但是使用BCP通常更简单,更高效。

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

创build一个简单的CSV文件

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

BCP master..sysobjects out c:\ sysobjects.txt -c -t,-T -S用于创buildCSV文件的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服务器之间传输数据,而不是-c,请将-n或-N用于本地数据格式(-N = Unicode)。 这是更快,避免数据转换问题。 有关BCP命令的完整格式,请参阅前面的BOL链接。

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

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

SSRS可能是实现你所追求的最简单的方法。 您可以使用分组来将Excel输出分成单独的表格,如下所述:

Reporting Services使用多个工作表导出到Excel

一旦你build立了报告,你可以build立一个数据驱动的订阅,它将按照预定的时间表定期发送文件:

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

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

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

另一种select是使用第三方工具。 它支持多种报告types,包括SSRS和直接调用存储过程。 你可以查看这个video的前几分钟,看看它是如何工作的: http : //www.r-tag.com/Pages/Preview_Demo.aspx

该工具不是免费的,但可以让您在一分钟内设置,运行或安排任务。 这个工具的优点之一是格式化excel文件的能力,所以你可以设置你的数据导出为带有摘要和filter的Excel表格。 您还可以以不同的方式呈现数据:分组,旋转等。该工具支持SSRS的数据驱动订阅。 @SQLDiverbuild议使用它来发送电子邮件,但数据驱动的订阅在SQLServer企业版中是可用的,这是昂贵的。 如果你需要数据驱动的报告,这个工具可能是企业版的一个便宜的select。 所以这取决于你的需求。 如果你只有一个这样的任务,基于SSRS或SSIS的解决scheme将更便宜,可能是一个更好的select。 如果您打算将来有多项任务,那么您需要特殊的格式,或者您需要数据驱动的subsriptions,它可能值得检查第三方工具是上面提到的。