【问题标题】:How to find the size of a file in a For Each Loop Container in SSIS?如何在 SSIS 的 For Each 循环容器中查找文件的大小?
【发布时间】:2015-06-29 06:02:38
【问题描述】:

我正在尝试在我的 FELC 中查找文件的大小。我使用了以下代码,但我不断收到错误消息。这是我的脚本任务中的代码。

     Public Sub Main()

    Dim LoopFilePath As String = Dts.Variables("User::vvarcharsource").Value.ToString

    Dim infoReader As System.IO.FileInfo
    infoReader = My.Computer.FileSystem.GetFileInfo(LoopFilePath)
    Dts.Variables("User::vintsize").Value = infoReader.Length
    Dts.TaskResult = ScriptResults.Success
End Sub

我使用一个 varchar 类型的读取变量 vvarcharsource 和一个 double 类型的读写变量 vintsize。

我得到的错误是:

调用的目标已抛出异常。

【问题讨论】:

    标签: vb.net ssis


    【解决方案1】:

    我不完全明白你在这里想要做什么。 这个“DTS 变量”是什么? 我也不知道你说的 FELC 是什么意思 (谷歌说第一英国路德教会或其他东西,所以解释会很好;))

    也许你把它拆分成更多的单一函数来看看它到底在哪里失败了,很难知道现在发生了什么

    我会将文件大小部分放入类似这样的内容中(您甚至可能想要构建一个返回所需值的函数)

    Public Sub GetFileInfo(ByVal Path As String)
    
        If System.IO.File.Exists(Path) Then
            Dim Fi As New FileInfo(Path)
            Dim FileSize As Long
            Dim FilsizeInt As Integer
            FileSize = Fi.Length
            FilsizeInt = CInt(Math.Round(FileSize / 1024))
            MsgBox("filesize is about " & FilsizeInt & " kb")
        Else
            MsgBox("file not found")
        End If
    
    End Sub
    

    【讨论】:

    • 该代码是我的 SSIS 包中脚本任务的一部分。
    【解决方案2】:

    将 User::vintsize 的数据类型转换为 varchar 解决了问题

    【讨论】:

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