Когда в качестве источника данных в проекте SSIS выступает документ Excel, есть несколько вариантов развития событий. Первый – разработчик знает в каком листе хранятся нужные данные и этот лист имеет статическое имя. Второй – данные находятся на листе, имя которого неизвестно, но его можно определить (например к статической части имени листа добавляется дата создания). Третий – разработчик не знает на каком листе могут оказаться нужные данные и каким образом формируется имя листа.
Рассмотрим варианты развитя события подробнее.
Первый. Лист имеет статическое имя.
Здесь все предельно просто, достаточно добавить в Data Flow Task истоник данных документ Excel, указать путь к документу и лист с которого будут браться данные.
Второй. Имя листа формируется динамически на основе заранее известных правил.
Здесь тоже нет ничего сверъестественного. Excel Data Source позволяет указать в качестве листа-источника данных переменную. Каким образом будет формироваться переменная зависит от проекта, но не стоит забывать, что для переменных, как и для кмпонентов workflow, можно использовать выражения (expressions).
Expressions – очень мощный инструмент, которой можно и нужно применять. Во многих случаях использование выражений поможет избежать использования Script Task’ов.
Третий. Имена листов неизвестны, сформировать имя листа невозможно.
Один из вариантов решения поставленной задачи – использование скрипт-таска, о чем хорошо написано, правда на англицокм, здесь. Но несмотря на бОльшую гибкость, которую дает скрипт-таск, все таки лучше стараться прибегать к нему в самых крайних случаях и стараться реализовывать поставленную задачу с помощью комопнентов, входящих в стандартую поставку. Поэтому мы пойдем другим путем.
Для начала нужно создать новый ADO.NET Connector, в качестве провайдера для которого будет использоваться Microsoft Jet OLE DB Provider.
Далее можно смело перейти на вкладку All, на ней нас интересуют параметры Data Source, где указывается путь к файлу Excel, и Extended Properties.
Далее нужно создать строковую переменную, в которую будет записываться имя листа Excel. В каком диапазоне должна быть видна переменная будет зависеть от задач, но можно не стесняясь сделать ее доступной всему пакету.
Теперь бросаем For Each Loop Container на Control Flow и лезем его настраивать. В качестве нумератора будем использовать Foreach ADO.NET Schema Rowset Enumerator. Установим в качестве соединения ADO.NET Connector, а в качестве схемы Tables.
А затем во влкадке Variables привзяываем созданную переменную к Index = 2. Если все сделано правильно, то при запуске пакета цикл For Each последовательно пройдется по всем листам и запишет имя листа в переменную.
В качестве простой полезной нагрузки, можно бросить в контейнер Data Flow Task, в который поместить Excel Source, в настройках которого указать, что имя листа берется из переменной, и какую-либо БД в качестве назначения.
Ссылки:
TechNet: http://technet.microsoft.com/en-us/library/ms345182.aspx
Уведомление: Добавление данных в Raw File Destination внутри ForEach Loop контейнера | BI Tech
Уведомление: … | BI Tech
near the bars and restaurants
}
Whеn youre serious abߋut a new profession as a paraⅼeցal,
there are a selectiion of options whiϲh youⅼl consider.
Yoᥙ may resolvе that being a freelаnce paralegal is tthe
way that you want to pᥙrsue this field. You can begin by weighing the professіonals and cons of this excitіng new
method oof working in the paralegal field; and chances are youll decide that its the
best choiсe fⲟr you.
Read more to find out about online poker roulette.
— воры бессовестные, выиграть нереально.
That is now possible for players on Casumo Casino!
Great blog right here! Additionally your site loads up fast!
What host are you the usage of? Can I get your affiliate link to your host?
I desire my website loaded up as fast as yours lol
It’s an awesome post in favor of all the online viewers; they will take advantage from it I am sure.
Coin master is all a few digital slot machine.
I read this piece of writing completely concerning the difference of most recent and preceding technologies, it’s amazing article.
Excellent goods from you, man. I’ve remember your stuff prior to and you’re just extremely excellent.
I actually like what you’ve bought right here, certainly like what you are
stating and the way in which during which you are
saying it. You are making it entertaining and you continue
to care for to keep it sensible. I can’t wait to read much more from you.
That is actually a great website.
I have read a few just right stuff here. Certainly price bookmarking for revisiting.
I surprise how so much attempt you set to make any such magnificent informative
website.
I have been exploring for a little for any high quality articles or weblog posts on this sort of
space . Exploring in Yahoo I ultimately stumbled upon this web
site. Studying this information So i’m glad to express that I have a very good uncanny feeling I discovered just what I needed.
I such a lot no doubt will make sure to do not fail to remember this web site and give it a glance regularly.
First of all I want to say awesome blog! I had a quick question that I’d like to ask if you don’t mind.
I was curious to know how you center yourself and clear your mind before writing.
I have had trouble clearing my mind in getting my thoughts out.
I do take pleasure in writing however it just seems like
the first 10 to 15 minutes are wasted simply just trying to figure out how to begin. Any
ideas or hints? Appreciate it!
Wow! In the end I got a weblog from where I be able to really get useful information regarding
my study and knowledge.
Great post.
My brother suggested I may like this web site.
He was once entirely right. This post truly made my day.
You can not consider simply how much time I had spent for this information! Thank you!