Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SSIS пройтись по папкам и узнать наименование папки  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1053
Необходимо пройтись по папкам и считывать наименование папки в переменную, причем надо проходится только по папкам с определенным наименованием:
u_1
u_2
u_3
остальные игнорировать можно игнорировать. В переменную необходимо получать 1,2,3, но для начала хотя бы u_1. Затем из этих папок надо копировать DB файлы в другую папку. Как это сделать? Не могу понять как считывать название папки.
Для начала сделала Foreach loop Container. Для него указала Fully qualified, прочекала Traverse subfolders, указала root папку. А дальше что?

Заранее спасибо.
13 дек 11, 20:04    [11759821]     Ответить | Цитировать Сообщить модератору
 Re: SSIS пройтись по папкам и узнать наименование папки  [new]
Интеграция
Guest
Hel975,

http://msdn.microsoft.com/ru-ru/library/ms167153(v=SQL.105).aspx
14 дек 11, 02:39    [11761336]     Ответить | Цитировать Сообщить модератору
 Re: SSIS пройтись по папкам и узнать наименование папки  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1053
Интеграция,

Пример, немного не в тему. У меня не проблема перебрать файлы в каталоге, а проблема перебрать каталоги и считать название каталога в переменную.
15 дек 11, 14:54    [11771549]     Ответить | Цитировать Сообщить модератору
 Re: SSIS пройтись по папкам и узнать наименование папки  [new]
Fire83
Member

Откуда: Гомель-Минск
Сообщений: 474
Hel975,

К сожалению стандартный Foreach loop Container бегает только по файлам.
Так что только через скрипты :(
вот тут пример:
http://microsoft-ssis.blogspot.com/2011/01/foreach-folder-enumerator.html
15 дек 11, 16:01    [11772383]     Ответить | Цитировать Сообщить модератору
 Re: SSIS пройтись по папкам и узнать наименование папки  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1053
Fire83
Hel975,

К сожалению стандартный Foreach loop Container бегает только по файлам.
Так что только через скрипты :(
вот тут пример:
http://microsoft-ssis.blogspot.com/2011/01/foreach-folder-enumerator.html


Спасибо, попробую через скрипты. А то пробовала использовать из примера: http://msftisprodsamples.codeplex.com/wikipage?title=SS2008!ForEachDirectory%20Sample&referringTitle=Home&ProjectName=msftisprodsamples# но не смогла установить сборку в Global Assembly Cache.

У меня не нашлось на компе установленного Visual Studio 2008 Command Prompt, поэтому сборку сделала без ключа. Подозреваю, что из-за этого при вызове gacutil.exe получаю ошибку: "Не удалось добавить сборку в кэш: Попытка установки сборки без строго имени". Первый раз делаю, поэтому не уверена из-за чего ошибка.
15 дек 11, 16:19    [11772663]     Ответить | Цитировать Сообщить модератору
 Re: SSIS пройтись по папкам и узнать наименование папки  [new]
Mgvlad
Member

Откуда: Минск
Сообщений: 97
Hel975
Необходимо пройтись по папкам и считывать наименование папки в переменную, причем надо проходится только по папкам с определенным наименованием:
u_1
u_2
u_3
остальные игнорировать можно игнорировать. В переменную необходимо получать 1,2,3, но для начала хотя бы u_1. Затем из этих папок надо копировать DB файлы в другую папку. Как это сделать? Не могу понять как считывать название папки.
Для начала сделала Foreach loop Container. Для него указала Fully qualified, прочекала Traverse subfolders, указала root папку. А дальше что?

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


в Скриптаске это делается на раз:

            string ListDir = ""; //переменная для списка
            DirectoryInfo di = new DirectoryInfo("Путь"); 
            foreach(DirectoryInfo sub_di in di.GetDirectories("U_*")) //цикл по папкам, отвечающим маске. Чувствительность к регистру надо уточнить.            
            { //начинаем через запятую писать в переменную список папок
               if (ListDir == "")  
                   ListDir += sub_di.Name.ToLower().Replace("U_","");
               else
                   ListDir += "," + sub_di.Name.ToLower().Replace("U_","");
            }
            Dts.Variables["Переменная"].Value = ListDir; // загоняем в переменную пакета результат.

Только не забыть в свойствах таска разрешить ему писать в переменную пакета.
15 дек 11, 17:13    [11773298]     Ответить | Цитировать Сообщить модератору
 Re: SSIS пройтись по папкам и узнать наименование папки  [new]
Hel975
Member

Откуда: Москва
Сообщений: 1053
Спасибо. Сделала скриптом.
15 дек 11, 20:56    [11774860]     Ответить | Цитировать Сообщить модератору
 Re: SSIS пройтись по папкам и узнать наименование папки  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31972
Mgvlad
в Скриптаске это делается на раз:
Можно сделать ещё проще в процесс-таске.

Сделать Execute Process Task, установить параметры:
Требуется полное имя файла: False
Исполняемый модуль: cmd
Аргументы: /C "dir /B /S /AD *"
WorkingDirectory: нужная папка
StandardOutputVariable: переменная, куда записать результат

Только я не понимаю, как потом по этому списку сделать цикл.
15 дек 11, 21:45    [11775030]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить