【问题标题】:check if file exists then import using script task in SSIS检查文件是否存在,然后使用 SSIS 中的脚本任务导入
【发布时间】:2014-11-13 01:21:08
【问题描述】:

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

【问题讨论】:

    标签: sql-server ssis sas


    【解决方案1】:

    看起来您需要将脚本任务包装在 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

    【讨论】:

      猜你喜欢
      • 2014-04-13
      • 2013-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      相关资源
      最近更新 更多