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

Откуда: Киев
Сообщений: 45
Всем привет!

Поставили передо мной такую вот задачу:

Есть excel файл с набором id-шек в столбце.
Нужно создать какую-нить процедуру, которая считывала б эти id-шки, создавала для каждой новый excel-файл, выполняла по каждому id некий sql запрос(выборку данных) и погружала выборку для каждого id в "свой" excel-файл.

Впринципе звучит не очень сложно.. Надеюсь все понятно описал)
MS Server 2008 R2 + Integration services.

Есть идеи?
Буду благодарен за помощь!)
23 дек 14, 11:00    [17038444]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32173
LolBee
Впринципе звучит не очень сложно
...
Есть идеи?

Противоречие...
LolBee
Буду благодарен за помощь!)
Вопрос то какой? Всё просто, всё уже сделали, но есть какая то проблема?
23 дек 14, 11:03    [17038469]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Мдя.. иногда постановка задач .. феерична
Ну возьмите SSIS нарисуйтье пакет и с NET коде напишите модуль да и делов

Только вот зачем для етго всего сиквел - непонятно вообще
23 дек 14, 11:08    [17038506]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
iiyama
Member

Откуда:
Сообщений: 642
LolBee,
ИМХО навскидку
1) SSIS - если делать самому
2) VBA скрипт из 10-20 строк - если делать будут регулярно рядовые пользователи
3) Какой-нибудь генератор отчетов с возможностью экспорта в Эксель и блэкджеком?
4) ...
23 дек 14, 11:27    [17038647]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
LolBee
Member

Откуда: Киев
Сообщений: 45
alexeyvg,

я русским по белому написал что "задачу поставили", это значить что есть только задание.
От форумчан мне интересны варианты решения этой задачи.
23 дек 14, 11:34    [17038700]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
LolBee
Member

Откуда: Киев
Сообщений: 45
iiyama,

Делать скорее всего буду сам..
А приложений с генераторами никаких нет у нас и если б были я б сюда не писал..
23 дек 14, 11:36    [17038712]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
vova ivanov
Member [заблокирован]

Откуда:
Сообщений: 1090
LolBee
От форумчан мне интересны варианты решения этой задачи.
макрос в Экселе, запускаемый большой зелёной кнопкой, в том же Экселе
23 дек 14, 11:38    [17038729]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
LolBee
Member

Откуда: Киев
Сообщений: 45
vova ivanov,

я не силен в VBA.
23 дек 14, 11:41    [17038746]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
iiyama
Member

Откуда:
Сообщений: 642
LolBee,
Тогда делайте тем инструментом, который знаете лучше
23 дек 14, 11:41    [17038754]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
LolBee
Member

Откуда: Киев
Сообщений: 45
iiyama,

Я в общем понимаю что куда..
Допустим с помощью SSIS подхватываю файл с данными, выполняю запрос по каждой id.. но вот как в ssis направить результат запроса по каждой id в отдельный excel ... не доходит ..(
23 дек 14, 11:50    [17038805]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
NewBie123
Guest
LolBee,

Используйте C#, через него легче создавать новые эксель файлы. Вот пример
http://www.codeproject.com/Articles/19509/Write-Data-to-Excel-using-C

Минусы SSIS/OPENROWSET в том, что сначала вы должны иметь файл-заготовку, т.к. с помощью них нельзя создавать эксельники. Если все эксель-файлы будут иметь одинаковый шаблон, то можно создать отельный файл и копировать его куда надо, затем в него писать инфу. Но через .Net будет проще.
23 дек 14, 12:03    [17038912]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
Аналогичную задачу решаю при помощи надстройки PLEX. Есть и бесплатная версия
Но если нужно проводить только эту процедуру с файлом, то добавь макросы
Первый - на разнесение данных на разные листы по определенному полю, второй - на сохранение каждого листа отдельным файлом
Можешь совместить оба в один
Здесь материал
23 дек 14, 12:19    [17039045]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
Maxx
Мдя.. иногда постановка задач .. феерична
Ну возьмите SSIS нарисуйтье пакет и с NET коде напишите модуль да и делов


Если не сложно, скиньте ссылку на литературу по "..SSIS нарисуйтье пакет и с NET коде напишите модуль..".
Насколько понял, dtsx-пакет можно "влить " в exe-шник?
23 дек 14, 12:22    [17039086]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
2viper2viper
Если не сложно, скиньте ссылку на литературу по "..SSIS нарисуйтье пакет и с NET коде напишите модуль..".

стандартная справка по SSIS и любая книжка по шарпу
23 дек 14, 12:47    [17039300]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
Shakill
2viper2viper
Если не сложно, скиньте ссылку на литературу по "..SSIS нарисуйтье пакет и с NET коде напишите модуль..".

стандартная справка по SSIS и любая книжка по шарпу


да пакеты составляю, но вешаю их на агента. А если можно "вшить" его в екзешник в сишке, то это расширяет потенциальные возможности при помощи штатного планировщика. Спс
23 дек 14, 13:15    [17039506]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
LolBee
Member

Откуда: Киев
Сообщений: 45
Короче я понял) надо активнее учить С# ...
23 дек 14, 13:20    [17039534]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
2viper2viper
Shakill
пропущено...

стандартная справка по SSIS и любая книжка по шарпу


да пакеты составляю, но вешаю их на агента. А если можно "вшить" его в екзешник в сишке, то это расширяет потенциальные возможности при помощи штатного планировщика. Спс

вы про это? Loading and Running a Local Package Programmatically
23 дек 14, 13:31    [17039626]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
2viper2viper
Member

Откуда:
Сообщений: 271
Shakill
2viper2viper
пропущено...


да пакеты составляю, но вешаю их на агента. А если можно "вшить" его в екзешник в сишке, то это расширяет потенциальные возможности при помощи штатного планировщика. Спс

вы про это? Loading and Running a Local Package Programmatically


Ага, Спс
23 дек 14, 14:07    [17039912]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
Valer
Member

Откуда:
Сообщений: 284
vova ivanov
предложил самою простую вещь, я ее несколько по подробнее раскрою
по VBA есть куча примеров, освоить несложно
делаете кнопку, к которой привязаны следующие действия
( все на VBA, код лежит в ексельке )
1 чтение ID из листа , типа ID = Cells( 5,10)
2 создаете ADO соединение с базой
3 запускаете SQL запрос или хп с нужным ID
4 получаете в результате выполнения рекордсет
5 создаете новую книгу и записываете туда данные из рекордсета
6 сохраняете книгу
7 переходите к следующему ID или закрываете соединение
по каждому шагу есть куча примеров, в том числе и на этом сайте
на форумах VB и Microsoft Office
23 дек 14, 14:23    [17040091]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9159
VBA, при наличии опыта программирования, вполне реально осилить за один-два вечера в рамках поставленной задачи.
23 дек 14, 14:26    [17040112]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32173
LolBee
alexeyvg,

я русским по белому написал что "задачу поставили", это значить что есть только задание.
А я прочитал:
LolBee
Впринципе звучит не очень сложно
По мне так звучит сложно.

Средствами SSIS это можно сделать, создавая динамически пакет для каждого запроса (и соответственно файла). Достаточно нетривиальная вещь даже для очень хорошего программиста.
Вот я и думал, какая помощь может потребоваться человеку, для которого это "просто"?

Пишите тогда прогу на том, что знаете.
Если ничего не знаете, начинайте с изучения T-SQL и C# - они ИМХО будут наиболее востребованы для таких задач.
23 дек 14, 18:53    [17042043]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
alexeyvg
LolBee
Впринципе звучит не очень сложно
По мне так звучит сложно.

Средствами SSIS это можно сделать, создавая динамически пакет для каждого запроса (и соответственно файла). Достаточно нетривиальная вещь даже для очень хорошего программиста.
Что-то вы усложняете. Запросы то одинаковые будут. Там меняется только id и имя файла. И то и другое задается переменной. Никакой динамики не нужно.
1. Читаем excel файл.
2. Делаем loop по id-шникам
3. Копируем заранее созданные пустой excel template файл
4. Через выражения формируем запрос и имя файла
5. Сливаем данные простейшим DataFlow.

Даже C# не надо открывать.
23 дек 14, 21:01    [17042472]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32173
Mind
Что-то вы усложняете. Запросы то одинаковые будут. Там меняется только id и имя файла. И то и другое задается переменной. Никакой динамики не нужно.
Я так понял, что по ID выбираем из таблицы текст запроса.

Выполняем запрос, в соответствии с результатами формируем эксельны файл, с колонками, соответствующими полям в запросе, и соответственно данными.

Если задача как вы говорите, то конечно всё намного проще.
23 дек 14, 21:43    [17042590]     Ответить | Цитировать Сообщить модератору
 Re: Oбработка данных MS SQL "Творческая задача"  [new]
vova ivanov
Member [заблокирован]

Откуда:
Сообщений: 1090
LolBee
vova ivanov,

я не силен в VBA.

страница с id-шниками называется ids,
id-шники - в 1-ой колонке, начиная с 1-ой строки (я выделил эти "моменты")
получаемые данные сохраняются в тот же файл, на новые страницы (переделаешь, если сохранение в новые файлы критично, - это плюс две строки кода ещё)
Sub test()
    Const strConn = "PROVIDER=SQLOLEDB.1;INITIAL CATALOG=master;DATA SOURCE=MyServer;User ID=MyID;PWD=MyPass"
    
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim fld As ADODB.Field
    Dim i As Long, j As Long
    Dim strSQL As String
    Dim WS As Worksheet
    
    i = 1
    Do While Worksheets("ids").Cells(i, 1) & "" <> ""
        strSQL = strSQL & "select * from [dbo].[spt_values] where [number]=" & Worksheets("ids").Cells(i, 1) & ";" & vbCrLf
        i = i + 1
    Loop
'    Debug.Print strSQL
    '
    Set cn = New ADODB.Connection
    cn.Open strConn
    '
    Set rs = New ADODB.Recordset
    rs.Open strSQL, cn
    '
    i = 1
    Do While Not (rs Is Nothing)
        Set WS = Worksheets.Add
        WS.Name = i
        WS.Range(WS.Cells(2, 1), WS.Cells(2, 1)).CopyFromRecordset rs
        '
        j = 1
        For Each fld In rs.Fields
            WS.Cells(1, j) = fld.Name
            j = j + 1
        Next
        '
        i = i + 1
        Set rs = rs.NextRecordset
    Loop
    '
On Error Resume Next
    Set WS = Nothing
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing
End Sub
24 дек 14, 01:31    [17043132]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить