2012-07-20 47 views
1

動態文件名我試圖創建SSIS數據流來幫助我通過FTP上傳文件,我有一個有點麻煩。文件的名稱需要是動態的,格式爲filename_mmddyy.xls。因此,它每天都會應用日期並上傳新文件。SSIS - 用於FTP組件

我能夠讓這個文件會在數據流中正確保存以下表達式:

@[User::path]+ 
Right("0"+(DT_STR,4,1252)DatePart("m",getdate()),2)+ 
Right("0"+(DT_STR,4,1252)DatePart("d",getdate()),2)+ 
Right("0"+(DT_STR,4,1252)DatePart("yyyy",getdate()),2)+ 
".xls" 

的FTP組件,但是,不會將作爲localPath一個表達式。我嘗試在我的原始數據流中覆蓋腳本組件內的User :: path變量,但這似乎也不起作用。

我知道我失去了一些東西每個簡單,但我盯着它足夠長的時間,它只是沒有向我涌來。

謝謝!

編輯

好了,打打鬧鬧的另一天之後,這裏是我想出來的:

我做了我原來的任務來創建我的平面文件。注意,我的供應商實際上需要一個真正的excel xls而不是一個csv,所以我必須建立一個文件連接目的地,然後我需要在我的服務器上創建一個靜態文件。

然後我用一個腳本任務(C#)的靜態文件複製到文件與動態域名。當然,我必須離開原始文件,因爲excel目標需要在那裏。

最後,我提出另一種文件的連接和使用上述表達式,因爲它的連接字符串。然後我有FTP任務使用文件連接作爲文件上傳。

我要去嘗試和修剪它全部下來一點。我想我可以逃避不使用腳本任務,而是使用文件系統任務來複制和使用文件連接來幫助使用動態路徑名。

底線我學到的是:在SSIS中,當它說:「PathIsVariable」,你把在文本字段什麼是作爲一個變量。因此,如果我放入@ [User :: path],它將解析爲「C:\ pathonmydrive」。然後SSIS查找具有該名稱的變量,即C:\ pathonmydrive來查找該文件。這有點反直覺,但現在我知道我可以避免這個陷阱。

+0

只是回答了這個問題解釋如何正確地通過一個腳本組件設置一個變量。但這可能不是你的問題所在。我一直在四處傳送文件用FTP組件和動態文件連接器和目睹了一些......「怪癖」與SSIS。只要讓我知道,如果它不工作和虐待很樂意幫助診斷問題 – cfrag 2012-07-20 09:11:46

回答

3
  1. 創建一個新變量,例如FilePath。使用字符串作爲數據類型,並在變量的屬性中將EvaluateAsExpression設置爲true。
  2. 配置變量的表達式:@[User::path] + "filename_" + Right("0"+(DT_STR,2,1252)DatePart("m",getdate()),2) + Right("0"+(DT_STR,2,1252)DatePart("d",getdate()),2)+ Right("0"+(DT_STR,4,1252)DatePart("yy",getdate()),2) + ".xls"
  3. 在表達式編輯器中使用Evaluate Expression按鈕來查看錶達式是否解析了文件的正確路徑。
  4. 修改您FTP taskExpressions屬性並設置LocalPath下創建的變量。
+0

感謝一大堆。昨天我想通了什麼得到它的工作,但我還是想現在就嘗試和改進,使這項工作是儘可能小......太多的工作零件。 – 2012-07-21 13:13:19

1

爲了改變一個腳本組件中的變量值,則需要先通過變量讀寫:

enter image description here

然後,到一個新的值設置爲變量:

Dts.Variables["folders"].Value = "value you want to assign"; 
1

創建一個新變量,例如FilePath。使用字符串作爲數據類型,並在變量的屬性中將EvaluateAsExpression設置爲true。 配置變量的表達:

@[User::path] + "filename_" + Right("0"+(DT_STR,2,1252)DatePart("m",getdate()),2) + Right("0"+(DT_STR,2,1252)DatePart("d",getdate()),2)+ Right("0"+(DT_STR,4,1252)DatePart("yy",getdate()),2) + ".xls" 

使用計算表達式按鈕表達式編輯器來查看是否表達式解析正確的文件路徑。

修改您的FTP任務的Expressions屬性,並設置你的localPath下創建的變量。


我上面的方式執行,但我仍然有問題The variable cannot be found ...任何想法