Скопируйте одну исходную строку в несколько строк назначения, сопоставив общее поле «Дата» с SSIS - PullRequest
0 голосов
/ 23 июня 2009

Вот сценарий: я - девственница из SSIS, но я нашел предлог, чтобы начать играть с ним. У меня есть один исходный набор данных Excel в следующем формате, где каждая строка представляет один месяц (последний день месяца):

[Date]       [Value]
4/30/2008    3.38
5/31/2008    3.65
6/30/2008    3.97
...

Мое назначение - это таблица, в которой есть строка для каждого дня месяца, где столбец [Значение] - это мой пустой столбец, который мне нужно заполнить значениями из документа Excel:

[Date]       [Value]   [Other columns with distinct data]
4/01/2008    NULL      .....
4/01/2008    NULL
4/01/2008    NULL
4/02/2008    NULL
4/02/2008    NULL
4/02/2008    NULL
4/03/2008    NULL
4/03/2008    NULL
4/03/2008    NULL
...

Мне нужно скопировать одно значение для каждого месяца в документе Excel для каждого дня значений соответствующих месяцев в таблице назначения, чтобы предыдущая таблица выглядела следующим образом:

[Date]       [Value]
4/01/2008    3.38
4/01/2008    3.38
4/01/2008    3.38
4/02/2008    3.38
4/02/2008    3.38
4/02/2008    3.38
4/03/2008    3.38
4/03/2008    3.38
4/03/2008    3.38
...

Возможно, вы подумали: «Почему вы хотите, чтобы значение дублировалось по строкам?», Но это всего лишь обратная заполнение данных - будущие записи выполняются с помощью веб-приложения, которое сохраняет их навалом, но отдельные записи дня могут настроены или отредактированы вручную.

Итак, мой вопрос: какие могут быть компоненты между моим источником Excel и моим назначением SQL Server в моем пакете служб SSIS? Я знаю, что мне нужно сделать:

  • Для каждой даты в наборе данных назначения я хочу найти в источнике Excel соответствующий месяц в столбце «Дата» и найти соответствующее значение
  • Далее мне нужно вставить значение Excel в столбец «Значение» в пункте назначения SQL Server.
  • И повтори ...

Означает ли это, что стоит использовать SSIS для? Это одноразовый концерт, но, как я уже сказал, я подумал, что это будет хорошей возможностью поиграть в SSIS. В то же время, я, вероятно, просто собираюсь собрать быстрый макрос в Excel, чтобы сгенерировать для меня некоторые операторы UPDATE.

Спасибо!

1 Ответ

0 голосов
/ 23 июня 2009

Получить содержимое листа Excel во временную таблицу в вашей БД SQL (временная таблица: #excelData).

А затем написать заявление об обновлении

UPDATE mainTable, #excelData
SET mainTable.Value = #excelData.Value
WHERE datepart(yy, mainTable.Date) = datepart(yy, #excelData.Value)  
and datepart(mm, mainTable.Date) = datepart(mm, #excelData.Value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...