文件扩展名脚本任务和错误处理

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