将执行 SQL 任务的结果保存到 Excel

Posted

技术标签:

【中文标题】将执行 SQL 任务的结果保存到 Excel【英文标题】:Saving results from Execute SQL Task to Excel 【发布时间】:2013-03-31 13:43:27 【问题描述】:

我正在尝试在 SSIS 中开发一个包。该包的逻辑比较简单:执行一个查询并将结果集保存在一个excel电子表格中。因此,我首先尝试创建如下所示的架构:- 我面临的问题是查询使用了临时表,而 OLE DB 源似乎无法解析包含临时表(#table-names)的查询。

所以我尝试在我的控制流中使用执行 SQL 任务。这似乎能够执行此查询。但现在我想获取整个结果集并将其保存在动态命名的 Excel 电子表格中。 我知道创建临时表是一种解决方案,但我不能使用它,因为客户不会对此感到高兴。 我尝试将结果集保存在一个变量中,但即使这样我也无法从 OLEDB 源中读取。 谁能给我这方面的建议。如果您需要任何澄清,请发表评论。

谢谢

【问题讨论】:

你可以使用临时表吗?不创建临时表,而是截断临时表。其他一切都应该相同。 @Dan-> 没有朋友 :(。不允许在服务器上创建任何数据库对象 你能让dba为你做吗? 使用 Execute SQL Task 创建带有结果集的临时表。创建一个将保存结果集的变量。使用 Retainsameconnection 属性。在 OLEDB Source 中,将变量视为输入,它实际上是 Execute SQL Task 的输出。 @Zerotoinfinite -> 是的,你的方法是正确的 【参考方案1】:

我会将临时表逻辑移动到公用表表达式 (CTE),例如

WITH CTE_temp AS (
<< select statement that populates your temporary table >>
)
SELECT
<< select statement from your temporary table>>
FROM CTE_temp

CTE 可以构建在其他 CTE 之上,并且可以是递归的。通过一些横向思考,它们涵盖了 99.9% 的临时表解决方案。

CTE 可以并行运行而不会出现争用问题。它们通常也比临时表解决方案更快。

【讨论】:

【参考方案2】:

这可以使用定义的连接管理器的“RetainSameConnection”属性来实现。 (当你创建临时变量时,临时变量在连接关闭时被删除......)

【讨论】:

以上是关于将执行 SQL 任务的结果保存到 Excel的主要内容,如果未能解决你的问题,请参考以下文章

如何将SQL server 2008 里的查询结果导出到 Excel 表内?

SQL中,我想把SQL查询分析器查询出来的结果,导出到EXCEL表格,求各位大侠指点。

将sql 查询结果导出到excel

将 Select Query (SQL Server) 的结果保存到 Excel 的工作表中

oracle sql (toad) - 执行多个查询,保存到单个 excel 文件

将sql查询结果导出到csv或excel