SSIS: как удалить строки из набора результатов перед использованием пункта назначения OLE DB? - PullRequest
0 голосов
/ 27 октября 2009

У меня проблема с использованием служб SSIS. Я пытаюсь импортировать данные из базы данных один в базу данных два. Поэтому я использую источник OLE DB со следующей командой:

SELECT Name, Description, JobID
FROM   DBone.Table

Моя проблема в том, что я хочу импортировать только новые данные из этого источника. Поэтому я использую второй источник OLE DB со следующей командой:

SELECT JobID
FROM   DBtwo.Table

Теперь я хочу импортировать только данные из одной базы данных, где JobID отсутствует во второй базе данных. Поэтому моя идея заключалась в том, чтобы использовать объединение слиянием для двух источников данных, чтобы мои данные выглядели следующим образом.

Name | Description    | DBone.JobID | DBtwo.JobID
-----------------------------------------------
'One'| 'Little test.' |      4      |     4    
'Two'| 'Little test.' |      6      |    NULL    

Таким образом, у меня есть возможность идентифицировать новые данные, поскольку столбец DBtwo.JobID имеет значение NULL.

Теперь мой вопрос: как мне сказать SSIS для импорта только данных в базу данных два, где DBtwo.JobID равен NULL, или для удаления этих данных перед импортом?

Ответы [ 3 ]

1 голос
/ 27 октября 2009

Альтернативный подход может состоять в том, чтобы сначала запустить задачу «Выполнение SQL», чтобы получить последний JobId из DBTwo, сохранить полученный результат в переменной, а затем использовать переменную в команде SQL для DBone.

1 голос
/ 27 октября 2009

Я бы использовал условное разбиение. Отправьте одну группу записей по пути для вставки, а другую отправьте в место назначения (или просто не определите, куда направляется другая).

Для назначения мусора смотрите эту ссылку: http://www.sqlis.com/post/Trash-Destination-Adapter.aspx

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

Пункт назначения корзины также полезен для использования в качестве пункта назначения данных, когда вы хотите проверить вещи перед тем, как фактически поместить их в реальный пункт назначения.

0 голосов
/ 27 октября 2009

Я думаю, что могу ответить на свой вопрос самостоятельно, потому что я нахожу способ отфильтровать данные.

После объединения двух таблиц с помощью компонента объединения слиянием я добавил компонент сценария. В этом компоненте я установил ExclusionGroup для вывода от 0 до 1 и добавил следующий код в скрипт:

If Row.JobID_IsNull Then

   Row.DirectRowToOutput0()

End If

Таким образом, компонент Script фильтрует данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...