Несколько вариантов, чтобы попробовать.
Поиск:
Мой первый инстинкт был Lookup Task
, но это может быть не лучшим решением в зависимости от размера ваших наборов данных, так как всеЗаписи из обеих таблиц должны передаваться по проводам и храниться в памяти на сервере SSIS. Но если вы смогли получить Merge Join
, то Lookup
также должен работать, но он может быть медленным.
Установите OLE DB Source
для извлечения данных Oracle без WHERE
пункт. Установите Lookup
, чтобы извлечь столбец id
из таблицы SQL Server. На вкладке General
в Lookup
в разделе Specify how to handle rows with no matching entries
выберите Redirect rows to no-match output
.
Результатом Lookup
будут только строки Oracle, которые нашли совпадающую строку в вашем SQL Serverзапрос.
Рабочая таблица на сервере Oracle
Если у вас есть возможность создать таблицу в базе данных Oracle, вы можете создать Data Flow Task
для передачи результатовваш запрос SQL Server в рабочую таблицу на коробке Oracle. Затем в последующем Data Flow
просто создайте запрос Oracle, чтобы использовать эту рабочую таблицу в качестве фильтра.
Возможно, после этого добавьте Execute SQL Task
для усечения этой рабочей таблицы.
Несмотря на то, что для этого требуется доступ на запись в Oracle, преимущество заключается в том, что он загружает тяжелую работу запроса вкомпьютер базы данных, и тянет только те строки, которые вам нужны, по проводам.