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 中的表达式不支持对象变量的数据类型的主要内容,如果未能解决你的问题,请参考以下文章