2011-06-19 104 views
0

我已經創建了一個包,使用FTP任務從FTP中拉出excel文件,然後將Excel文件處理爲SQL數據庫。從FTP中拉出後,Excel將存儲在一個文件夾中。我已經將File路徑存儲在一個變量中,並且在Precedence costraint中給出了一個條件來檢查該文件是否存在於文件夾中。只有存在文件路徑時才應該執行excel處理任務。但似乎即使文件不存在,程序包也會執行,這會失敗。所以我想檢查一下我給出的情況是否錯誤。我在優先約束已給出的條件如下:優先約束條件

@[User::FilePath] != "" 

其中@ [用戶::文件路徑]包含即C中的文件路徑:\ FTPDestination \ FileName.xlsx

是上述條件不正確?什麼是正確的條件給予?

回答

1

使用條件@[User::FilePath] != ""無助於驗證文件是否存在。此條件將僅檢查字符串變量FilePath是否爲空字符串。

這是您可以用來實現您的要求的可能選項。您可以放置​​Foreach loop container來循環訪問給定文件夾中的文件。

  1. 配置如屏幕截圖#所示SSIS包。放置一個FTP task,Foreach loop container並且可以將任何任務放置在Foreach循環容器中。

  2. 創建4個變量,如截圖#所示。 FTP路徑包含下載FTP文件的路徑; FolderPath包含保存文件的文件夾; FileExtension是應該匹配循環通過Foreach循環容器內的文件;並且FilePath將成爲Foreach循環容器中將要循環的每個文件的路徑。

  3. 配置在屏幕截圖中所示的作爲FTP task#和#4

  4. 配置在scrteenshots所示的Foreach loop container爲#和#6

  5. 屏幕截圖#當一個文件從FTP成功下載到目標文件夾。

  6. 屏幕截圖#在FTP文件夾中找不到匹配的文件時顯示。如果您不希望FTP任務在沒有找到文件時失敗,請參閱我在this Stack Overflow question中的回答。

希望有所幫助。

截圖#1:

1

截圖#2:

2

截圖#3:

3

截圖#4:

4

截圖#5:

5

截圖#6:

6

截圖#7:

7

截圖#8:

8