[英]SSIS - File System task cannot find file path after using script task to assign variable
在我當前的項目中,我必須獲取一個已知目錄但名稱未知的excel文件,將其放入數據庫表中,然后移動並重命名所使用的excel文件。
因為這是我的第一個項目,所以我已經使用了一些教程和stackoverflow頁面,因此為什么每個循環的控制流都位於a中(即使可能不需要),但這里是控制流:
http://i.stack.imgur.com/Nepgg.png
這是我的腳本任務,用於查找excel文件並分配變量:
public void Main()
{
string directoryLocation = @"I:\All\L3VA Import\"; //Change this for new directory
int directoryLength = directoryLocation.Length;
string[] filePath = Directory.GetFiles(directoryLocation, "*.xls*");
int filePathLength = filePath[0].Length;
Dts.Variables["myConnectionString"].Value = filePath[0];
Dts.Variables["myFileName"].Value = filePath[0].Substring(directoryLength, filePathLength - directoryLength);
然后,我使用“數據流”任務將電子表格數據泵入OLE DB,OLE DB不能單獨工作,但是如果首先執行腳本任務就可以工作,這使我相信它可以正確分配變量。
當我然后嘗試使用“文件系統任務”移動並重命名此文件時,出現了我的問題,似乎找不到這些變量的值並遇到錯誤:
錯誤:文件系統任務上的錯誤:0xC002F304,文件系統任務:>以下錯誤消息發生了錯誤:“找不到路徑的一部分。”。
任務失敗:文件系統任務
這是使用的變量列表和文件系統任務: http : //i.stack.imgur.com/p6FWD.png
在我看來,如果存在多個文件,您將如何決定哪個Excel文件最合適。 您是否需要遍歷其中的多個? 無論如何,如果您使用Foreach Loop Container
並將其設置為搜索目錄,就像您的腳本一樣,則不需要腳本任務。 因此,您可以執行以下操作:
Foreach Loop Container
並配置以搜索目錄並將映射變量映射到您剛剛設置的內容 data flow
Excel Connection
設置data flow
后,在Connection Manager
上設置一個expression
,以使用File Path Variable
作為connection string
請注意,因為您可能需要動態構建目標路徑,所以您可能需要更多的變量以更輕松的方式完成任務。
foreeach loop
文件名和擴展名
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.