检查文件是否存在然后使用SSIS中的脚本任务导入

时间:2014-11-13 01:21:08

标签: sql-server ssis sas

我有静态表,有这样的东西: xy_Jan10 yz_Feb11 xx_March14 by_Aug09 等等 这些名称是静态的,它们存储在表中。我正在使用ForEachLoop容器,所以首先我正在阅读并将上面提到的所有静态名称保存到系统对象变量中。接下来我使用ForeachLoop包含并循环遍历每个文件名并将其保存到另一个名为strFileName的字符串变量中。所以在我的每个循环容器中,我有脚本任务,首先检查文件是否存在,这里是我有问题的地方,对于变量的每个文件名,我想检查该文件名是否存在firs,如果存在我想将它加载到我的表中,如果不存在,那么我想检查下一个文件名,如果下一个文件名不存在,那么我想检查内联的下一个变量名,依此类推。我只想加载如果变量文件名与网络驱动器上的文件匹配,如果没有找到,那么我想检查下一个,直到我通过我的静态列表名称中的每个。我的问题现在脚本任务在与文件名不匹配时停止,但我希望它转到列表中的下一个变量名并加载它,因为还有很多其他未加载的匹配。脚本任务在第一个找不到的位置停止。这是我的脚本任务: 请注意我加载的文件不是SAS文件。

 Public Sub Main()
        '
        ' Add your code here
        '

        Dim directory As DirectoryInfo = New DirectoryInfo("\\840KLM\DataMart\CPTT\Cannon")
        Dim file As FileInfo() = directory.GetFiles("*.sas7bdat")

        If file.Length > 0 Then
            Dts.Variables("User::var_IsFileExist").Value = True
        Else
            Dts.Variables("User::var_IsFileExist").Value = False
        End If
        Dts.TaskResult = ScriptResults.Success

    End Sub

1 个答案:

答案 0 :(得分:0)

看起来您需要将脚本任务包装在ForEach循环容器中。有关于如何在网络上执行此操作的大量信息,甚至是Stack Overflow:How to loop through Excel files and load them into a database using SSIS package?

http://www.sqlis.com/sqlis/post/Looping-over-files-with-the-Foreach-Loop.aspx