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

Откуда: Санкт-Петербург
Сообщений: 348
всем привет. Подскажите, как обработать файлы CSV из папки. Файлы создаются с именем, в котором содержится дата и время. Затруднение вызывает цикличное обращение к файлам с динамическим именем.

Заранее спасибо.
8 авг 15, 02:33    [17992174]     Ответить | Цитировать Сообщить модератору
 Re: SSIS источник файлов  [new]
Nicks
Member

Откуда:
Сообщений: 124
Была похожая задача, но надо было обработать последний файл по времени. В итоге была решена так, что был создан файл text.csv и в него копировался последний найденный файл и обрабатывался SSIS именно text.csv.
Здесь также можно сделать, копировать все файлы поочередно в один, и его обрабатывать. Возможно, не самый оптимизированный метод, но работает :)
8 авг 15, 22:52    [17994052]     Ответить | Цитировать Сообщить модератору
 Re: SSIS источник файлов  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Nicks,
если есть пакет, можешь скинуть? Голову сломал уже... как-то не все очевидно, примеры бедные на сайте мс.
9 авг 15, 12:18    [17994759]     Ответить | Цитировать Сообщить модератору
 Re: SSIS источник файлов  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3059
MedBrat, используйте обычны ForLoopConteiner, результат в переменную и её подставляете в источнике как источник данных

SSIS BASICS: Introducing the Foreach Loop Container
10 авг 15, 08:12    [17996975]     Ответить | Цитировать Сообщить модератору
 Re: SSIS источник файлов  [new]
Jaffar
Member

Откуда:
Сообщений: 633
MedBrat,

надо загрузить ответ ОС на команду dir в табличную переменную и бежать по ее строкам.
Так гарантировано проще и не нужно каких то ручных рассчетов имен.

declare @__TEMP table(id int identity(1, 1), FileName varchar(512))

insert @__TEMP(FileName)
exec xp_cmdshell 'dir C:\123\Folder\'


declare @N int, @M int, @FileName varchar(512)
select @n = min(ID), @M = max(ID) from @__TEMP

while(@N <= @M)
BEGIN
select @FileName = FileName from @__TEMp where ID = @N

-- ...... обработка


set @N=  @N + 1
END
10 авг 15, 08:48    [17997051]     Ответить | Цитировать Сообщить модератору
 Re: SSIS источник файлов  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
Jaffar,

а все тоже самое, но с фтп?
13 авг 15, 22:03    [18015449]     Ответить | Цитировать Сообщить модератору
 Re: SSIS источник файлов  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
MedBrat,

В ForEach контейнере есть возможность перебирать файлы в папке по маске.
14 авг 15, 10:48    [18016737]     Ответить | Цитировать Сообщить модератору
 Re: SSIS источник файлов  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
a_voronin
MedBrat,

В ForEach контейнере есть возможность перебирать файлы в папке по маске.


да, я это уже нашел, но интересует, может ли этот компонент перебирать файлы на FTP? Мне нужно обработать все фалы по маске, которые валяются на FTP.
14 авг 15, 11:54    [18017224]     Ответить | Цитировать Сообщить модератору
 Re: SSIS источник файлов  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
MedBrat
a_voronin
MedBrat,

В ForEach контейнере есть возможность перебирать файлы в папке по маске.


да, я это уже нашел, но интересует, может ли этот компонент перебирать файлы на FTP? Мне нужно обработать все фалы по маске, которые валяются на FTP.


Может, но надо развернуть дополнительный компонент.

http://microsoft-ssis.blogspot.ru/2012/01/custom-ssis-component-foreach-ftp-file.html

Или можно через скрипт -- вот тут уже написан

http://microsoft-ssis.blogspot.ru/2011/08/foreach-ftp-file-enumerator.html
14 авг 15, 14:29    [18018141]     Ответить | Цитировать Сообщить модератору
 Re: SSIS источник файлов  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
a_voronin,

спасибо большое за ценный материал.

У меня попутно возник вопрос, решение которого я пока не придумал. Если у меня CSV файлы условно разных типов (разбивать намерен по названию), на каком этапе лучше разделять обработки? Обрабатываются они по-разному, в зависимости от количества и состава полей.

т.е. по сути было бы неплохо, чтоб в Data Flow были несколько ветвей со своей специфичной обработкой, а некий оператор управлял потоком и передавал данные на нужный выход, при этом остальные отключались.

Подскажите плз, поскольку тут меня опыта не так много, тяжеловато придумать сходу, как красивы обыграть.
16 авг 15, 00:07    [18023881]     Ответить | Цитировать Сообщить модератору
 Re: SSIS источник файлов  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3059
у каждой workflow (стрелочки) есть св-ва, в которых Вы можете установить поведение:
1. безлговорочный переход
2. переход по условию

т.е определяете для каждого типа делаете свой датафлоу. У каждого воркфлоу делаете условие срабатывания
при обработке папки с файлами, определяете тип файла, устанавливаете нужный флаг
17 авг 15, 08:31    [18026839]     Ответить | Цитировать Сообщить модератору
 Re: SSIS источник файлов  [new]
MedBrat
Member

Откуда: Санкт-Петербург
Сообщений: 348
HandKot,

спасибо за наводку. И снова вылезла проблема. Создал, сохранил пакет (практически по образцу со ссылки). При повторном открытии решения в Vis St долго пыжится и выкидывать пачку ошибок. Не понятно подобное поведение.

Может кто сталкивался?

P>S> при повторной сборке пакета получаем аналогичную ситуацию. кстати, редактирование пакета после добавления элемента For Each становится мученьем. каждый элемент при нажатии на него тупит, как проклятый.

Может ли это быть связано с использованием Vertica в качестве получателя данных?
18 авг 15, 16:36    [18035086]     Ответить | Цитировать Сообщить модератору
 Re: SSIS источник файлов  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3059
это связано скорее всего с тем, куда смотрит контейнер.
Пакет постоянно пытается проверить работу (валидносрть) всех соединений и остальных элементов.
Вроде как выход редактировать пакет в "офлайн моде", меню SSIS\Work offline
19 авг 15, 08:09    [18037106]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить