【问题标题】:Passing filename from SSIS script task从 SSIS 脚本任务传递文件名
【发布时间】:2019-07-22 16:18:04
【问题描述】:

我正在尝试创建一个将平面文件加载到 SQL 服务器表中的 SSIS 包。

我已经能够将加载功能拼凑在一起。如果从脚本任务中找到文件名,我目前坚持将文件名传递回我想在平面文件连接字符串中使用它的变量。

Public Sub Main()
        '
        Dim di As DirectoryInfo = New DirectoryInfo("\\winshare\iFile\Cors2\AAA\AAA Employee Incentive Source Data\")

        Dim fi As FileInfo() = di.GetFiles("AAA Full PreReg Report*.csv")

        If fi.Length > 0 Then
            Dts.Variables("User::fileExists").Value = True
            Dts.Variables("User::FileName").Value = fi.name
        Else
            Dts.Variables("User::fileExists").Value = False
        End If

        ' Add your code here
        '
        Dts.TaskResult = ScriptResults.Success
    End Sub

我正在寻求帮助 Dts.Variables("User::FileName").Value = fi.name

为什么这不起作用?

谢谢

【问题讨论】:

  • 您是否有理由不使用Foreach Enumerator 的开箱即用功能?
  • 这是一个数据类型问题,因为您没有强制转换?看起来 fi 可能是一个数组而不是一个字符串
  • 什么不起作用?你有任何例外吗?您是否将变量设置为 [Read/Write][1] ? [1]:stackoverflow.com/questions/51598743/…

标签: sql-server vb.net ssis etl script-task


【解决方案1】:

如果您要获取目录中的第一个文件,则可以使用以下代码行:

Dts.Variables("User::FileName").Value = fi(0).name

但是,如果您要循环文件,那么我建议使用 Foreach 循环容器来循环文件并将每个文件名存储在一个变量中:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多