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

Posted

技术标签:

【中文标题】ssis 中的表达式不支持对象变量的数据类型【英文标题】:The data type of object variable is not supported in an expression in ssis 【发布时间】:2020-02-26 17:01:28 【问题描述】:

我正在使用 sql 任务检索 id 列表并存储在对象变量中。将每个 id 传递给 foreach 循环容器我正在创建 csv 文件。我希望 csv 文件名是唯一的。 我们如何将变量中的 id 附加到 csv 文件名?

谢谢

【问题讨论】:

先将两者都转换为 DT_STR?然后使用表达式来组合连接字符串属性的变量和文件名。由于您没有提供具体信息,因此很难给出详细的答案。 【参考方案1】:

将每个 id 传递给 foreach 循环容器我正在创建 CSV 文件。我希望 CSV 文件名是唯一的

您不必更改存储整个 id 列表的对象变量,因为 foreach 循环将当前 id 值映射到一个变量(容器编辑器中的变量映射选项卡),您可以创建另一个变量评估为表达式以生成唯一名称。例如,考虑 @[User::CurrentID] 是在 foreach 循环中存储当前 id 的变量。创建另一个字符串类型的变量并使用类似的表达式对其进行评估:

"D:\\MyCSV_" + (DT_WSTR,50)@[User::CurrentID] + ".csv"

请注意,平面文件连接管理器连接字符串必须使用表达式进行评估,以从该变量中读取。

如果@[User::CurrentID] 是字符串类型,您可以在 foreach 循环容器中添加一个表达式任务,以使用类似的表达式更改其值:

@[User::CurrentID] = "D:\\MyCSV_" + @[User::CurrentID] + ".csv"

有用的链接

SSIS Foreach loop container dynamic file name and path , then unzip files Dynamic Flat File Connections in SQL Server Integration Services SSIS Expression Tasks vs Evaluating variables as expressions

【讨论】:

red-gate.com/simple-talk/sql/ssis/…

以上是关于ssis 中的表达式不支持对象变量的数据类型的主要内容,如果未能解决你的问题,请参考以下文章

SSIS 数据类型 第二篇:变量的数据类型

SSIS 数据类型 第二篇:变量的数据类型

无法在 SSIS 2017 中的 excel 连接管理器上使用表达式

如何将 DT_R8 存储在 SSIS 中的变量中

SSIS 包动态连接中的异常处理

SSIS 处理NULL