当它具有动态名称时,如何在 SSIS 中删除控制流中的平面文件?
How can I delete in SSIS a FlatFile in ControlFlow when it has dynamic name?
我使用 SQL Server 2016
并且我有一个 SSIS 包,我在其中创建了一个 FlatFile
和一个 dynamic Name
在循环中的一个数据流中。
为了创建名称,我使用了这个路径:
"SomeText" + DateTime
+ "SomeText"
我创建了一个如下图所示的变量:
这是我变量中的表达式:
然后我将此变量分配给 FlatFile Destination 的 connectionString 属性,如下所示:
在某些情况下,在 DataFlow
中,我没有数据,因此我创建了一个空文件,但我需要在它为空时将其删除。因此,我创建了一个变量,并使用 RowCount Component
来填充此变量。
在Control Flow
之后,如果我的变量是0,我放了一个File System Task
用于删除文件。(我的循环是基于一个对象)
但是我有一个问题,在DataFlow
中,当我想删除文件时,FlatFile
的名称会被更改,我找不到与已创建的相同的文件在 DataFlow
.
问题是当我想使用变量时,变量的值会在第二次改变。
如何删除在 DataFlow
中动态创建的 Control Flow
中的 Flat File
?
将删除步骤放入 for each 循环中。 Foreach 具有通配符文件名掩码的文件枚举器。
带有一个输出字符串变量,它将是找到的文件名,您可以将其放入删除变量
您需要使用脚本任务来设置变量值,而不是表达式生成器。
由于您在表达式构建器中使用 date/time,因此它会不断变化。使用脚本任务将允许您在循环迭代时 capture/store date/time 值,并在整个循环中持久存储该值。
此脚本任务通常位于循环的顶部(第一个),并且它会 set/change 每次迭代的文件名。
以下是如何执行此操作的一些示例:
https://microsoft-ssis.blogspot.ca/2010/12/how-to-use-variables-in-script-task.html
如果您正在获取文件名中使用的数据流中的值,那么您可能需要使用脚本组件(转换)来更新数据流中的文件名。
以下是如何执行此操作的一些示例:https://microsoft-ssis.blogspot.ca/2011/01/how-to-use-variables-in-script.html
我使用 SQL Server 2016
并且我有一个 SSIS 包,我在其中创建了一个 FlatFile
和一个 dynamic Name
在循环中的一个数据流中。
为了创建名称,我使用了这个路径:
"SomeText" + DateTime
+ "SomeText"
我创建了一个如下图所示的变量:
这是我变量中的表达式:
然后我将此变量分配给 FlatFile Destination 的 connectionString 属性,如下所示:
在某些情况下,在 DataFlow
中,我没有数据,因此我创建了一个空文件,但我需要在它为空时将其删除。因此,我创建了一个变量,并使用 RowCount Component
来填充此变量。
在Control Flow
之后,如果我的变量是0,我放了一个File System Task
用于删除文件。(我的循环是基于一个对象)
但是我有一个问题,在DataFlow
中,当我想删除文件时,FlatFile
的名称会被更改,我找不到与已创建的相同的文件在 DataFlow
.
问题是当我想使用变量时,变量的值会在第二次改变。
如何删除在 DataFlow
中动态创建的 Control Flow
中的 Flat File
?
将删除步骤放入 for each 循环中。 Foreach 具有通配符文件名掩码的文件枚举器。
带有一个输出字符串变量,它将是找到的文件名,您可以将其放入删除变量
您需要使用脚本任务来设置变量值,而不是表达式生成器。
由于您在表达式构建器中使用 date/time,因此它会不断变化。使用脚本任务将允许您在循环迭代时 capture/store date/time 值,并在整个循环中持久存储该值。
此脚本任务通常位于循环的顶部(第一个),并且它会 set/change 每次迭代的文件名。
以下是如何执行此操作的一些示例: https://microsoft-ssis.blogspot.ca/2010/12/how-to-use-variables-in-script-task.html
如果您正在获取文件名中使用的数据流中的值,那么您可能需要使用脚本组件(转换)来更新数据流中的文件名。
以下是如何执行此操作的一些示例:https://microsoft-ssis.blogspot.ca/2011/01/how-to-use-variables-in-script.html