Служба SSIS извлекает текущую папку в подпапках обхода цикла foreach - PullRequest
1 голос
/ 13 октября 2011

Я использую SSIS для чтения .txt файлов на входе и выполнения над ними бизнес-логики, сохраняя результаты вывода в файле, имя которого совпадает с текущим файлом входного файла (имя файла динамически хранится в переменной).

Когда все файлы хранятся в одной папке, у меня нет проблем с доступом к ним, поскольку я использую следующее выражение для строки подключения плоского файла в потоке данных: "path" + @[User::inputFileName] + ".txt"

Теперь мне нужно обработать папку с подпапками (я установил обходные подпапки в цикле foreach), и у меня возникли некоторые проблемы со строкой подключения к плоскому файлу, поскольку я не могу использовать подстановочный знак, такой как: my path\\subfolder*" + @[User::inputFileName] + ".txt", где каждая подпапка имеет одинаковое имя и изменяет только последнюю часть имени.

Как сохранить текущее имя подпапки в переменной, чтобы использовать его следующим образом? "path\\"+ @[User::currentSubFolder] +"\\" + @[User::inputFileName] + ".txt"

1 Ответ

1 голос
/ 13 октября 2011

Мне удалось решить мою проблему, поэтому я напишу здесь свое решение на случай, если кто-то еще окажется в такой же ситуации.

Я использовал блок преобразования скрипта перед циклом foreach.Из него я могу извлечь текущий полный путь (используемый впоследствии в строке подключения к плоскому файлу) и имя входного файла без расширения, которое будет использоваться в качестве имени выходного файла, содержащего результаты сценариев SSIS.

Чтобы сохранить значения интересов, я использовал 2 переменные: одну для имени файла и одну для пути.

Здесь код сценария:

Public Sub Main()

    'Variable Index 0 => FileName
    'Variable Index 1 => filePath

    Dim fullPath As String = Dts.Variables.Item(1).Value.ToString
    Dim fileName As String = Path.GetFileName(fullPath)
    fileName = fileName.Substring(0, fileName.Length - 4) 

    Dts.Variables.Item(0).Value = fileName
    Dim x As String = Dts.Variables.Item(0).Value.ToString

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