从SSIS派生列创建变量

时间:2017-12-12 21:15:12

标签: sql-server variables ssis etl derived-column

在我的SSIS包中,我有一个脚本组件,可在程序包运行时创建+1新客户ID。

我想将ID的数值赋给变量。该变量将在文件系统任务中用于创建一个目录,其中客户ID作为文件夹名称。

Example - C:\Customer Orders\<CO_ID>

我在名为(CO_ID)的数据流中创建了派生列(序列)转换。但是,我坚持使用变量表达式的正确语法。

感谢任何建议。

2 个答案:

答案 0 :(得分:0)

如果没有错误信息和更多细节,很难说出错了什么。但我认为您正在尝试将数字转换为字符串,然后将其连接到另一个字符串(路径)。如果是这种情况,您的派生列表达式应该类似于:

"c:\Customer Orders\" + (DT_STR, 10,1252) CO_ID

如果反斜杠给你一个问题(无法记住是否需要转义),那么请尝试将它们加倍:

"c:\\Customer Orders\\" + (DT_STR, 10,1252) CO_ID

答案 1 :(得分:0)

Derived column Transformation用于Dataflow taskExecute System Task位于Control Flow级别,因此任何变量更新都不会显示Control Flow级别,直到Dataflow Task执行已完成。因此它只会为最后CO_ID创建一个目录。

如果您需要为每个客户创建一个Directory,并假设您在脚本Component中创建了ID。只需使用以下代码(Vb.Net)

从中创建目录
If Not Io.Directory.Exists("c:\Customer Orders\" & COID.ToString()) Then

   IO.Directory.CreateDirectory(c:\Customer Orders\" & COID.ToString())

End If

否则,如果您只需要创建列并稍后循环,我认为您只需要将CO_ID列投放到DT_WSTR

"C:\\Customer Orders\\" + (DT_WSTR, 50) [CO_ID]