使用动态变量创建 SSIS 包

Posted

技术标签:

【中文标题】使用动态变量创建 SSIS 包【英文标题】:Create SSIS package with Dynamic Variables 【发布时间】:2015-10-28 07:37:49 【问题描述】:

我们有一个创建 SSIS 包的新要求。当包被执行时,它应该将某些表数据复制到一个 excel 文件中。

表名,excel文件路径,excel文件名是动态的(根据用户输入)。 我是 SSIS 新手,我只使用静态值。如何在 SSIS 中实现上述场景?

【问题讨论】:

用户输入的来源(应用程序、SSMS、日程安排等)? Excel 文件结构和表格结构每次都会完全一样吗? @Aka Guymelef ,它来自应用程序,我们认为将输入作为参数传递给存储过程。 @Raj 更多,表结构明显不同,excel 结构取决于表结构。 【参考方案1】:

这在 SSIS 中并不容易,因为您需要在表源和 Excel 目标之间使用数据转换组件。每次查询具有不同的输出列时,该数据转换组件必须具有不同的列。

我在网上找到了一些解决方案,但没有一个对我有用。所以我写了自己的解决方案,基本上包括以下步骤:

获取 SQL 脚本文件的内容(您可以在该文件中放置选择查询)。 从脚本代码创建一个临时表(用于确定输出的结构)。 生成并执行用于创建 Excel 工作表的脚本。 以 Excel 文件作为输出动态生成用于执行 SQL 脚本的临时包。 执行并删除动态包。

目前我正在www.codeproject.com 上写一篇文章来分享我的开发成果。但是,它可能需要一段时间才能完成。

【讨论】:

感谢您的回答。但我在第 3 和第 4 分中被击中。你能详细说明一下吗? 不客气。我将在我关于 codeproject 的文章中这样做。它需要大量解释......但简而言之:为 Excel 创建一个 CREATE TABLE 脚本。可以在此处找到示例:codeproject.com/Articles/301542/…。生成动态包的代码可以在这里找到:blogs.msdn.com/b/mattm/archive/2009/01/02/…. 请在完成文章后通知您。让我自己试试 @user5359841:这是 CodeProject 上的文章:codeproject.com/Articles/1037650/…。 欢迎您!

以上是关于使用动态变量创建 SSIS 包的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ssis 包中的变量中获取当前周星期一的日期

SSIS 部署变量问题

008_SSIS 变量赋值的几种方式

SSIS 动态表和数据流中的列数

ssis 中的表达式不支持对象变量的数据类型

在 SSIS 包中将参数值传递给变量会导致运行时错误