Как получить последние данные папки динамически в ssis - PullRequest
3 голосов
/ 04 мая 2019

У меня есть папки по этому пути C:\Customer\

Имена папок:

04012019
04022019
04032019
...

Я хочу выбрать самую последнюю папку (04032019) динамически.

Может кто-нибудь, пожалуйста, помогите мне, как добиться этого в ssis.

Заранее спасибо !!

1 Ответ

0 голосов
/ 06 мая 2019

Вы можете использовать задачу скрипта для достижения этого:

  1. В пакете создайте переменную типа string (пример: @[User::FolderPath])
  2. Добавить задачу скрипта
  3. Выберите @[User:FolderPath как ReadWriteVariable
  4. Используйте похожий скрипт:

Сначала необходимо добавить using System.Linq;, чтобы использовать функции Linq в скрипте

public void Main()
{

    //Change the root folder value an specify the main directory that contains the folders you need to process
    string rootfolder = @"C:\Customer\";
    DateTime dt;
    string[] folders = System.IO.Directory.GetDirectories(rootfolder, "*", System.IO.SearchOption.TopDirectoryOnly);

    string maxdatefoldername = folders.Select(x => System.IO.Path.GetFileName(x))
        .Where(y => DateTime.TryParseExact(y,"MMddyyyy",System.Globalization.CultureInfo.InvariantCulture,System.Globalization.DateTimeStyles.None,out dt) == true)
        .OrderByDescending(z => DateTime.ParseExact(z, "MMddyyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None)).FirstOrDefault();

    string maxfolder = folders.Where(x => System.IO.Path.GetFileName(x) == maxdatefoldername).FirstOrDefault();

    Dts.Variables["User:FolderPath"].Value = maxfolder;

    Dts.TaskResult = (int)ScriptResults.Success;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...