這裏是一個非常簡單的例子(它可以改善 - 參見後碼塊註釋)通過使用腳本任務動態地改變連接字符串。您還可以使用表達式和連接管理器的表達式屬性動態更改連接字符串。但是,由於您正在使用腳本任務來處理下載,因此我已經使用其中一個進行了演示。
由於您沒有標記您正在使用的腳本語言(VB或C#),我已經在VB中編寫了一個粗略的草稿。
我已添加評論,但stackoverflow語法突出顯示解釋奇怪;道歉。
Public Sub Main()
' Get the HTTP Connection
Dim connObj As Object = Dts.Connections("HTTP Connection Manager").AcquireConnection(Nothing)
Dim connection As New HttpClientConnection(connObj)
' Static list of month names for dynamic connection string (obviously add as many as needed)
Dim monthNames As String() = New String() {"Januar", "February", "March"}
' Nested loop - for each year and month, try to download the Excel file
For Y As Integer = 2007 To 2016 Step 1
For M As Integer = 0 To monthNames.Length - 1 Step 1
' Set the assumed name of the remote file
Dim remoteFileName As String = monthNames(M) + "-" + Y.ToString() + ".xls"
' Change the connection string a.k.a dynamic connection string
connection.ServerURL = "http://www.ads-slo.org/media/xls/" + Y.ToString() + "/" + remoteFileName
' Set where to download the file to
Dim localFileName As String = "C:\Temp\" + remoteFileName
Try
connection.DownloadFile(localFileName, True)
Dim buffer As Byte() = connection.DownloadData()
Dim data As String = Encoding.ASCII.GetString(buffer)
Catch E As Exception
' File may not exist on remote server, delete the blank copy it attempted to create
File.Delete(localFileName)
End Try
Next
Next
Dts.TaskResult = DTSExecResult.Success
End Sub
這怎麼能改進?
一個潛在的改進是解析的文件夾和目錄內容的遠程服務器(保存爲月份名稱,硬編碼的開始和結束多年的建設和文件名的靜態列表)使用HttpWebRequest。
但是,遠程服務器權限可能會存在問題,因此您需要進行進一步調查並與服務器管理員進行交流。
測試上述代碼,它成功下載了網站上的Januar-2015和Januar-2016 Excel文件。
哇謝謝你太多了。 – user3729625
但是,如果我正試圖在此頁面上下載xls文件,我該怎麼辦:https://nio.gov.si/nio/data/prvic+registrirana+vozila+v+letu+2014+po+mesecih。由於他們的URL不是可以預測的。有一種簡單的方法來解壓縮文件並將它們導入到sql表中嗎? 再次提前謝謝您。 親切的問候,Domen – user3729625