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

Откуда:
Сообщений: 274
Делаю импорт из excel в таблицу бд через BIDS. Мне нужно чтобы перед занесением данных из екселя эти данные обработать sql скриптом (убрать дублирующиеся записи). Подскажите каким элементом Toolbox это делать и как будет выглядеть схема Data Flow?
25 ноя 11, 05:31    [11655981]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5118
клац
25 ноя 11, 09:47    [11656338]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
Rudge
Member

Откуда:
Сообщений: 274
Дедушка, спс за ссылку. Пытаюсь установить Distinct.dll, но не могу запустить Visual Studio command promt, не вижу её у себя. Visual Studio 2008
25 ноя 11, 10:13    [11656486]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
КапитанОчевидность
Guest
distinct = group by
Ваш КО.
25 ноя 11, 12:00    [11657445]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
Rudge
Member

Откуда:
Сообщений: 274
Таблица такая:

id name param1

123 abc qwe
123 abc asd
123 abc zxc

Нужно чтобы после обработки осталась первая уникальная(по полю id) запись со всеми параметрами, т.е. "123 abc qwe". Напоминаю, что делаю через BIDS integration service project
25 ноя 11, 12:23    [11657680]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5118
Rudge
Мне нужно ...убрать дублирующиеся записи

Rudge
Таблица такая:

id name param1

123 abc qwe
123 abc asd
123 abc zxc

Нужно чтобы после обработки осталась первая уникальная(по полю id) запись со всеми параметрами, т.е. "123 abc qwe"

вы уж определитесь, что нужно то...
25 ноя 11, 13:58    [11658764]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
Rudge
Member

Откуда:
Сообщений: 274
Сорри, если ввел в заблуждение.

Мне нужно так:

Таблица такая:

id name param1

123 abc qwe
123 abc asd
123 abc zxc

Нужно чтобы после обработки осталась первая уникальная(по полю id) запись со всеми параметрами, т.е. "123 abc qwe". Напоминаю, что делаю через BIDS integration service project
25 ноя 11, 18:09    [11661401]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
Rudge
Member

Откуда:
Сообщений: 274
up
27 ноя 11, 10:16    [11666085]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
select top 1 with ties * from MyTable
ordr by row_number() over (partition by id order by name)
27 ноя 11, 10:22    [11666089]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
Rudge
Member

Откуда:
Сообщений: 274
Knyazev Alexey 
спасибо.

Вопрос, а где теперь этот скрипт ввести в bids можно?
28 ноя 11, 07:45    [11668640]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
Rudge
Member

Откуда:
Сообщений: 274
up
28 ноя 11, 14:21    [11671029]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
Rudge
Member

Откуда:
Сообщений: 274
up
29 ноя 11, 06:26    [11675186]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
КапитанОчевидность
Guest
в SSIS нет агрегатов по нечисловым полям, можно использовать script component


вот пример (правда в VB)
http://social.msdn.microsoft.com/forums/en-US/sqlintegrationservices/thread/c4b5d008-d9d3-42ed-9f4a-a4ffa13a3a27/
29 ноя 11, 12:21    [11676648]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
Rudge
Member

Откуда:
Сообщений: 274
Как так нет? Ведь в мастере импорта/экспорта можно выбрать между "Copy data from one or more table or views in the source database" и "Write a query to specify the data to transfer". А в BIDS возможности должны быть шире, наверняка можно вставить какой-нить элемент toolbox между excel source и ole db destination, в котором выборка сделается.
29 ноя 11, 12:30    [11676726]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
КапитанОчевидность
Guest
Rudge
Как так нет? Ведь в мастере импорта/экспорта можно выбрать между "Copy data from one or more table or views in the source database" и "Write a query to specify the data to transfer". А в BIDS возможности должны быть шире, наверняка можно вставить какой-нить элемент toolbox между excel source и ole db destination, в котором выборка сделается.


Никак нет. Вообще.

Если у вас источник данных поддерживает SQL, то вы можете уже от него получать данные возвращенные самым монстроузорным запросом, какой только переварит этот источник. Но внутри пакета не сможете сделать агрегат по текстовому полю стандартными компонентами в SSIS.


ЗЫ
Ваш КО
29 ноя 11, 12:54    [11677019]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Excel -> OLE DB Command (sql-query) -> OLE DB Destination
где-то так)
29 ноя 11, 12:55    [11677032]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
КапитанОчевидность
Guest
AlexMajic
Excel -> OLE DB Command (sql-query) -> OLE DB Destination
где-то так)



угу,

автор
OLE DB Command - Executes an SQL command for each row in a dataset.



что ж вы напишите вовнутрях этого OLE DB Command дабы решить поставленную задачу?
29 ноя 11, 13:08    [11677154]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
Rudge
Member

Откуда:
Сообщений: 274
Какой конекшн менеджер для OLE DB Command (sql-query) указать?
29 ноя 11, 13:12    [11677191]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Прошу прощения за OLE DB Command, недопонял.
Если нужно убрать дубликаты по какому-то полю (если я теперь правильно понял), тогда делаем следующий дата-флоу:
Excel Source -> Sort (указываем поле, по которому убираем дубликаты; ставим галочку Remove rows with duplicate sort values) -> OLE DB Destination
29 ноя 11, 13:39    [11677533]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
КапитанОчевидность
Guest
AlexMajic
Прошу прощения за OLE DB Command, недопонял.
Если нужно убрать дубликаты по какому-то полю (если я теперь правильно понял), тогда делаем следующий дата-флоу:
Excel Source -> Sort (указываем поле, по которому убираем дубликаты; ставим галочку Remove rows with duplicate sort values) -> OLE DB Destination

еще раз перечитайте что нужно автору.
29 ноя 11, 13:42    [11677567]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
Rudge
Member

Откуда:
Сообщений: 274
Через Sort отработало, только почему-то из двух дублирующихся записей он отобрал 2-ю
29 ноя 11, 14:07    [11677790]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Rudge
Через Sort отработало, только почему-то из двух дублирующихся записей он отобрал 2-ю

Описания алгоритма удаления дубликатов у этого компонента нету.... Если нужно оставить только первые записи и есть возможность добавить столбец в источник (порядковый номер строки) - тогда две сортировки подряд это сделают. Первая сортирует по ключевому полю и порядковому номеру строки (descending), вторая - убирает дубликаты.
29 ноя 11, 15:14    [11678391]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
Rudge
Member

Откуда:
Сообщений: 274
Вопрос, а как теперь сделать, чтобы при каждом запуске этого пакета он добавлял бы только те записи, которых нет в таблице назначения(смотрел по id)?
29 ноя 11, 17:37    [11679361]     Ответить | Цитировать Сообщить модератору
 Re: ssis pack: excel > sql script > таблица бд  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Rudge
Вопрос, а как теперь сделать, чтобы при каждом запуске этого пакета он добавлял бы только те записи, которых нет в таблице назначения(смотрел по id)?

После последнего Sort добавить компонент дата-флоу Slowly Changing Dimension и направить его New Output на OLE DB Destination
29 ноя 11, 18:57    [11679643]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить