我们使用 FTP task
中的 SSIS
从FTP服务器下载大约500个文件,最大文件大小约为2千兆字节。下载失败50%的时间。我们希望在我们的 SSIS
包中实施一个步骤,该步骤将在我们尝试之前检索 FTP Server
上的文件列表和文件大小下载它们进行处理。 FTP Task
没有检索文件列表和文件大小的操作。你能提供一个如何做到这一点的例子吗?
以下是我发现的 Script Task
代码块,用于检索文件名列表并存储在XML文件中。
Dim ftpFileNameListXML As New StringBuilder
ftpFileNameListXML.AppendLine("<filelist>")
Dim ftpcm As ConnectionManager = Dts.Connections("FTP")
Dim ftp As FtpClientConnection = _
New FtpClientConnection(ftpcm.AcquireConnection(Nothing))
Dim ftpFileNames() As String
Dim ftpFolderNames() As String
ftp.Connect()
ftp.SetWorkingDirectory(Dts.Variables("FtpWorkingDirectory").Value.ToString())
ftp.GetListing(ftpFolderNames, ftpFileNames)
ftp.Close()
Dim i As Integer
For i = 0 To ftpFileNames.GetUpperBound(0)
ftpFileNameListXML.Append("<file name='")
ftpFileNameListXML.Append(ftpFileNames(i))
ftpFileNameListXML.AppendLine("'/>")
Next i
ftpFileNameListXML.AppendLine("</filelist>")
Dts.Variables("FtpFileListXML").Value = ftpFileNameListXML.ToString()
Dts.TaskResult = ScriptResults.Success
答案 0 :(得分:1)
以下是获取VB中文件大小的链接:http://www.codeproject.com/Questions/205915/VB-NET-get-the-size-of-a-file-Downloading-in-FTP-S
“您应该使用GetFileSize [^]字段预先知道所选的文件大小。”
Dim ftp As Net.FtpWebRequest = GetRequest(URI)
ftp.Method = Net.WebRequestMethods.Ftp.GetFileSize
尝试使用ListDirectoryDetails