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

Откуда:
Сообщений: 33
Здравствуйте! Помогите, пожалуйста! Есть excel-файлы, которые предоставляет каждый факультет. В каждом файле лист соответствует определенной кафедре. Лист содержит информацию о среднем балле с группировкой по специальности в разрезе групп. Детализация данных идет по семестрам и вцелом за год. Подскажите, пожалуйста, как собрать все файлы в одно хранилище, которое в дальнейшем будет использоваться как источник данных для olap-куба? Сложность в том, как очистить таблицы от строк, содержащих данные по группировке, а также от шапки таблицы, занимающей несколько строк, при условии что структура таблиц во всех файлах одинакова, факультеты заполняют данные по своим группам. Различаются соответственно только сами наименования листов, а также могут быть дополнительные листы, которые грузить не нужно. Сильно не пинайте, с sql только начинаю разбираться. Подскажите, в каком направлении двигаться? Для каждого файла создавать свой поток данных, где указывается, какие листы грузить?
3 апр 14, 12:19    [15826378]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5124
цикл по файлам - foreach loop container
загрузка нужного диапазона из экселя - openrowset from variable (custom properties Excel source task)
3 апр 14, 12:59    [15826682]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Ирина18,
Для начала можете привести пример вкладки? Не понял про группировки.

Ирина18
Для каждого файла создавать свой поток данных, где указывается, какие листы грузить?

Да. Вы грузить собираетесь в базу SQL сервера?
3 апр 14, 13:36    [15826903]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Ирина18
Member

Откуда:
Сообщений: 33
Yagrus2, файл прикрепила. Такой файл скидывает каждый факультет, их структура одинакова, заполняются только нужные строки. Стоит задача выборки нужных листов, очистить их от лишних строк (желтые строки с названием дисциплины, заголовки) и собрать в один массив, чтобы потом загрузить в базу sql сервера.

К сообщению приложен файл (Факультет 1.xls - 30Kb) cкачать
3 апр 14, 14:24    [15827276]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Ирина18,
В вашем файле на мой взгляд только одно проблемное место. Это первая и вторая строка. Перед загрузкой нужно подготовить файл, что бы все начиналось со столбцов
Дисциплина/Группа Семестр 1 Семестр 2 Год

То есть перед заливкой нужно удалить 1 и 2 строки. Я вижу только макросы. Но я в них не силен.
Так как вы новичок, то...
Далее как только это сделано нужно создавать на каждый файл поток(соответственно на N файлов нужно создать N Excel Connection Manager)
После этого создаете N Excel сорсов и направляете в одно ole db дистинейшен, предварительно его создав.

Также стоит заметить, если Дисицплина 1 на одной вкладке может совпадать с Дисицплина 1 на другой, то вам помимо 4-х столбцов EXCEL нужно вносить и информацию о факультете.

После этого вызываете Execute SQL Task, который удаляет строки типа Дисциплина/Группа = Дисицплина
3 апр 14, 15:16    [15827608]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Ирина18
Member

Откуда:
Сообщений: 33
Yagrus2, создавать на каждый файл свой поток не имеет смысла, т.к. в теории возможно изменение количества файлов. Здесь вариант с контейнером и переменной.
Подскажите, пожалуйста, по поводу загрузки нужного диапазона из excel? Как при этом выбрать только нужные листы?
3 апр 14, 17:22    [15828575]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5124
Ирина18
Подскажите, пожалуйста, по поводу загрузки нужного диапазона из excel? Как при этом выбрать только нужные листы?
вам же выше дали ответ 15826682 не хотите через openrowset from variable используйте переменную в самом сорстаске
3 апр 14, 17:45    [15828751]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Ирина18
Member

Откуда:
Сообщений: 33
Дедушка, да, я видела, спасибо. Не могли бы Вы дать хоть какой-то похожий пример как обходить листы и выбирать диапазоны. Извините, что не понимаю всё, пока только учусь )))
3 апр 14, 18:07    [15828899]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5124
обход листов Excel файлов
для выбора диапазона в переменную (которая в эксель_сорс_таске) пишите "Sheet1$A2:В5"
3 апр 14, 19:22    [15829379]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Ирина18
Member

Откуда:
Сообщений: 33
Дедушка, спасибо большое, разобралась. Только вопрос остался в том, как выбирать данные с определенных листов книги. В книги могут быть листы со вспомогательными данными, которые грузить не нужно. Удалять их каждый раз не вариант. Как организовать выборку опеределенных листов из всех книг, а потом уже циклом проходиться по ним?
8 апр 14, 13:55    [15849381]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5124
вон сверху ссылка, там ажно в картинках всё расписано...
8 апр 14, 14:32    [15849639]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Ирина18
Member

Откуда:
Сообщений: 33
Добрый день, подскажите, пожалуйста, как организовать отбор листов excel для загрузки. Есть мысль сделать файл, который содержит перечень имен необходимых листов. Далее проверять условие: если значение переменной из контейнера равно значению из файла с перечнем имен листов, то лист грузим, в противном случае нет.
10 апр 14, 13:00    [15861176]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Ирина18
Member

Откуда:
Сообщений: 33
Или может есть способ лучше, подскажите, пожалуйста?
10 апр 14, 13:02    [15861185]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
Ирина18, как вариант, можно перечень листов впихнуть в конфигурацию и от туда считывать в переменную, а по ней уже организовывать цикл
10 апр 14, 13:10    [15861237]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Ирина18
Member

Откуда:
Сообщений: 33
HandKot, да, в дальнейшем так и планировать сделать. Вопрос в том, как реализовать условие проверки соответствия, каким способом?
10 апр 14, 13:21    [15861349]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
Ирина18
HandKot, да, в дальнейшем так и планировать сделать. Вопрос в том, как реализовать условие проверки соответствия, каким способом?

теперь я не понимаю. что значит условие отбора?
10 апр 14, 16:20    [15863148]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Ирина18
Member

Откуда:
Сообщений: 33
HandKot, я считываю в переменную значения (имена таблиц для загрузки). Потом, если я правильно понимаю, эту переменную необходимо указать в качестве режима доступа к данным для источника excel. Правильно ли я делаю?
10 апр 14, 16:36    [15863312]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5124
- можно считать ваш файл (с именами листов для загрузки) в recordset destination
а в скрипт таске (в котором вы перебираете листы конкретного файла) проверять есть ли имя текущего листа в этом рекордсете

- можно (если вам так удобнее) сразу в скрипт таске (в котором вы перебираете листы конкретного файла) читать этот файл (минуя предварительную загрузку в recordset destination)
10 апр 14, 17:31    [15863819]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
Ирина18
HandKot, я считываю в переменную значения (имена таблиц для загрузки). Потом, если я правильно понимаю, эту переменную необходимо указать в качестве режима доступа к данным для источника excel. Правильно ли я делаю?

приблизительно так. В переменной, насколько я понимаю, у Вас коллекция (не одно название), то это все делается через лупконтейнер, по которой оный и бежит

Дедушка
- можно считать ваш файл (с именами листов для загрузки) в recordset destination
а в скрипт таске (в котором вы перебираете листы конкретного файла) проверять есть ли имя текущего листа в этом рекордсете

- можно (если вам так удобнее) сразу в скрипт таске (в котором вы перебираете листы конкретного файла) читать этот файл (минуя предварительную загрузку в recordset destination)


может и не заморачиваться, только предусмотреть обработку ошибки на отсутствие листа
11 апр 14, 09:30    [15866058]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Ирина18
Member

Откуда:
Сообщений: 33
Всем большое спасибо, разобралась )))
11 апр 14, 10:30    [15866420]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Ирина18
Member

Откуда:
Сообщений: 33
Дедушка
- можно (если вам так удобнее) сразу в скрипт таске (в котором вы перебираете листы конкретного файла) читать этот файл (минуя предварительную загрузку в recordset destination)


Дедушка, подскажите, пожалуйста, по поводу данного варианта? Сделала скрипт таск, в котором перебираю листы с данными и сохраняю их в переменную типа object, которая потом идет в контейнер. Как в этом же скрипт таске читать файл с листами для загрузки, именно как получить полный набор записей? И как потом сравнивать переменные? Приводить их к другому типу?
24 апр 14, 16:48    [15930693]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35396
Блог
Ирина18,

https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1087534&msg=15855301
24 апр 14, 19:35    [15931790]     Ответить | Цитировать Сообщить модератору
 Re: несколько файлов excel в ssis  [new]
Ирина18
Member

Откуда:
Сообщений: 33
Подскажите, пожалуйста, в каком месте правильно прописать сравнение?
connectionString = Dts.Variables("uVar_SourceConStr_ConnectionString").Value.ToString
            excelConnection = New OleDb.OleDbConnection(connectionString)
            excelConnection.Open()
            tablesInFile = excelConnection.GetSchema("Tables")
            tableCount = tablesInFile.Rows.Count
            For Each tableInFile In tablesInFile.Rows
                currentTable = tableInFile.Item("TABLE_NAME").ToString

                ' ???? If currentTable = Dts.Variables("Table").Value Then

                currentTable = currentTable.Replace("'", "")
                If Right(currentTable, 1) = "$" Then
                    LoopForNumberOfRealTabs += 1
                    ReDim Preserve excelTables(LoopForNumberOfRealTabs - 1)
                    excelTables(LoopForNumberOfRealTabs - 1) = currentTable
                End If

                '  ??? End If

            Next
            excelConnection.Close()
            excelConnection = Nothing
            Dts.Variables("uVar_ExcelTabObjectName").Value = excelTables
            Dts.TaskResult = ScriptResults.Success
25 апр 14, 17:59    [15937486]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить