我需要使用MS SSIS將平面文件轉換爲數據庫。我需要一種方法來查看特定文件夾以獲取(僅)平面文件,文件名格式爲「FileName-CCYYMMDD.txt」。如何在SSIS中以字符串形式檢測文件名?
請幫我,如果有辦法從文件夾中添加一個文件 或 獲取格式爲「文件名,CCYYMMDD.txt」哪裏是CCYYMMDD的文件名是當前日期或可能的currentdate -1根據要求。
任何代碼示例或截圖將不勝感激!
我需要使用MS SSIS將平面文件轉換爲數據庫。我需要一種方法來查看特定文件夾以獲取(僅)平面文件,文件名格式爲「FileName-CCYYMMDD.txt」。如何在SSIS中以字符串形式檢測文件名?
請幫我,如果有辦法從文件夾中添加一個文件 或 獲取格式爲「文件名,CCYYMMDD.txt」哪裏是CCYYMMDD的文件名是當前日期或可能的currentdate -1根據要求。
任何代碼示例或截圖將不勝感激!
動態獲取的連接,你需要使用表達對平面文件
實例的ConnectionString屬性,讓「d:\ CC080226.txt」,你可以用下面的表達。
「d:\ CC」
+ RIGHT((DT_WSTR,4)YEAR(GETDATE()),2) +(DT_WSTR,2)月(GETDATE()) +(DT_WSTR,2)天(GETDATE()) +「.TXT」
將文件名放入變量中,可能通過連接,並用表達式設置變量。
對不起,我很着急,這裏是腳本中的快照,希望它有幫助。
此軟件包正在掃描符合您規格的文件的文件夾,然後將控件傳遞給數據流。
alt text http://img395.imageshack.us/img395/8531/dynafilecontrolflowms9.jpg
控制流,http://img395.imageshack.us/img395/8531/dynafilecontrolflowms9.jpg
alt text http://img104.imageshack.us/img104/2010/dynafileforeachij5.jpg
每個循環性能,http://img104.imageshack.us/img104/2010/dynafileforeachij5.jpg
alt text http://img164.imageshack.us/img164/7614/dynafilefilesystemyj1.jpg
文件系統屬性,http://img164.imageshack.us/img164/7614/dynafilefilesystemyj1.jpg
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
Imports System.IO
Public Class ScriptMain
Public Sub Main()
Dim Ext As String = ".txt"
Dim Path As String = ".\" 'must get from package variable to be more dynamic
Dim FileNames() As String = Directory.GetFiles(Path, "CC*" + Ext, SearchOption.TopDirectoryOnly)
Dim ValidFileNames As New Collection
For Each FileName As String In FileNames
Dim FileDate As String = FileName.Substring(Len(Path) + 2) 'first 2 letter is already "CC"
If Not IsYmd(FileDate.Substring(0, Len(FileDate) - Len(Ext))) Then Continue For
ValidFileNames.Add(FileName)
Next
Dts.Variables("FileNames").Value = ValidFileNames
Dts.TaskResult = Dts.Results.Success
End Sub
Private Function IsYmd(ByVal Test As String) As Boolean
If Len(Test) <> 6 Then Return False
Dim Year As String = Left(Test, 2)
Try
If CStr(2000 + CInt(Year)) <> "20" + Year Then Return False
Catch ex As Exception
Return False
End Try
Dim Month As String = Mid(Test, 3, 2)
Try
If CInt(Month) < 1 Then Return False
If CInt(Month) > 12 Then Return False
Catch ex As Exception
Return False
End Try
Dim Day As String = Right(Test, 2)
Dim FirstOfMonth As String = "20" + Year + "/" + Month + "/01"
Dim EndOfMonth As Integer = DateAndTime.Day(DateAndTime.DateAdd(DateInterval.Day, -1, _
DateAndTime.DateAdd(DateInterval.Month, 1, CDate(FirstOfMonth))))
Try
If CInt(Day) < 1 Then Return False
If CInt(Day) > EndOfMonth Then Return False
Catch ex As Exception
Return False
End Try
Return True
End Function
End Class
在數據流中,右鍵單擊平面文件源>顯示高級編輯器>組件屬性。在自定義屬性下,爲FileNameColumnName屬性指定一個名稱。這會將文件路徑和名稱添加到輸出列集合中。