文件扩展名脚本任务和错误处理
File extension Script task and Error handling
我几乎没有使用 VB 脚本或 C# 的经验。我使用一些符合我目的的在线教程创建了这个 SSIS 包,但我必须对其进行微调以满足我的要求。
当前场景:
我正在尝试 运行 一个 SSIS 包,它有一个 for-each 循环容器,它在目录中导入扩展名为 *.txt
的文件,因为文件名不是固定的。这个 for-each 循环容器之后是一些其他 SQL 任务。
即使目录中没有文件,包也成功执行(可能是我在创建容器和数据流任务、文件系统任务时做错了)。这导致 for-each 循环容器末尾的 SQL 脚本成功执行,从而导致数据错误。
要求:
如果目录中没有文件,包应该失败。我必须在 for-each 循环容器之前实现一个脚本,但不确定该怎么做。任何潜在客户将不胜感激!
我做了类似的事情,但不确定如何搜索扩展名而不是文件名:
Public Sub Main()
'
' Add your code here
'
Dim fileName As String
fileName = "filename.txt"
If System.IO.File.Exists(fileName) Then
Dts.Variables("User::bolFileExists").Value = True
Else
Dts.Variables("User::bolFileExists").Value = False
End If
Dts.TaskResult = ScriptResults.Success
End Sub
下面是我的建议,我在使用事件处理部分的一个要求中做了同样的事情,底层 DFT 不是 运行,然后事件处理程序页面中的脚本会引发错误。要注意的一点是,如果目录中有任何文件,DFT 运行s 至少一次,如果没有 运行s 则引发错误会很简单而不是编写复杂的脚本
谢谢,
斯里尼瓦斯
你应该使用 System.IO.Directory.GetFiles()
函数。
If System.IO.Directory.GetFiles(<your path goes here>, "*.txt", SearchOption.AllDirectories).Length = 0 Then
Dts.Variables("User::bolFileExists").Value = False
Else
Dts.Variables("User::bolFileExists").Value = True
End If
我几乎没有使用 VB 脚本或 C# 的经验。我使用一些符合我目的的在线教程创建了这个 SSIS 包,但我必须对其进行微调以满足我的要求。
当前场景:
我正在尝试 运行 一个 SSIS 包,它有一个 for-each 循环容器,它在目录中导入扩展名为 *.txt
的文件,因为文件名不是固定的。这个 for-each 循环容器之后是一些其他 SQL 任务。
即使目录中没有文件,包也成功执行(可能是我在创建容器和数据流任务、文件系统任务时做错了)。这导致 for-each 循环容器末尾的 SQL 脚本成功执行,从而导致数据错误。
要求:
如果目录中没有文件,包应该失败。我必须在 for-each 循环容器之前实现一个脚本,但不确定该怎么做。任何潜在客户将不胜感激!
我做了类似的事情,但不确定如何搜索扩展名而不是文件名:
Public Sub Main()
'
' Add your code here
'
Dim fileName As String
fileName = "filename.txt"
If System.IO.File.Exists(fileName) Then
Dts.Variables("User::bolFileExists").Value = True
Else
Dts.Variables("User::bolFileExists").Value = False
End If
Dts.TaskResult = ScriptResults.Success
End Sub
下面是我的建议,我在使用事件处理部分的一个要求中做了同样的事情,底层 DFT 不是 运行,然后事件处理程序页面中的脚本会引发错误。要注意的一点是,如果目录中有任何文件,DFT 运行s 至少一次,如果没有 运行s 则引发错误会很简单而不是编写复杂的脚本
谢谢, 斯里尼瓦斯
你应该使用 System.IO.Directory.GetFiles()
函数。
If System.IO.Directory.GetFiles(<your path goes here>, "*.txt", SearchOption.AllDirectories).Length = 0 Then
Dts.Variables("User::bolFileExists").Value = False
Else
Dts.Variables("User::bolFileExists").Value = True
End If