Как определить имя файла в SSIS? - PullRequest
2 голосов
/ 24 декабря 2008

Мне нужно преобразовать плоский файл в БД с помощью MS SSIS. Мне нужен способ просмотреть конкретную папку для извлечения (только) плоского файла, имя файла имеет формат «FileName-CCYYMMDD.txt».

Пожалуйста, помогите мне, если есть способ добавить файл из папки ИЛИ ЖЕ Получите имя файла в формате «Filename-CCYYMMDD.txt», где CCYYMMDD - текущая дата или, возможно, CurrentDate -1 в соответствии с требованиями.

Любые примеры кода или скриншоты будут высоко оценены!

Ответы [ 4 ]

3 голосов
/ 26 декабря 2008

Чтобы получить соединение динамически, вам нужно использовать выражение для свойства ConnectionString плоского файла

Например, чтобы получить «D: \ CC080226.txt», вы можете использовать следующее выражение.

"D: ​​\ CC"
+ ПРАВО ((DT_WSTR, 4) ГОД (GETDATE ()), 2) + (DT_WSTR, 2) MONTH (GETDATE ()) + (DT_WSTR, 2) DAY (GETDATE ()) + ".TXT"

1 голос
/ 09 сентября 2010

В потоке данных щелкните правой кнопкой мыши Источник плоского файла> Показать расширенный редактор> Свойства компонента. В разделе «Пользовательские свойства» укажите имя для свойства FileNameColumnName. Это добавит путь и имя файла в коллекцию выходных столбцов.

0 голосов
/ 14 января 2009

Извините, я спешу, вот снимки и сценарии, надеюсь, это поможет.

Этот пакет сканирует папку на наличие файлов, соответствующих вашим спецификациям, а затем передает управление потоку данных.

альтернативный текст http://img395.imageshack.us/img395/8531/dynafilecontrolflowms9.jpg

Control Flow, http://img395.imageshack.us/img395/8531/dynafilecontrolflowms9.jpg

альтернативный текст http://img104.imageshack.us/img104/2010/dynafileforeachij5.jpg

Для каждого свойства петли, http://img104.imageshack.us/img104/2010/dynafileforeachij5.jpg

альтернативный текст 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
0 голосов
/ 24 декабря 2008

Поместите имя файла в переменную, возможно, через соединение, и установите переменную с выражением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...