Я пытаюсь создать поток для извлечения данных из таблицы Oracle в таблицу SQL Server. Я посылаю следующий запрос к Oracle, чтобы получить данные:SSIS и отправка запроса с датой в Oracle
select distinct CHLD.id,
nvl(chld_c_spl, 'N'),
to_char(chld_d_start, 'YYYY-MM-DD') chld_d_start,
to_char(chld_d_end, 'YYYY-MM-DD') chld_d_end
from child chld,
picture ptct
where CHLD.id = PTCT.chld_id
and nvl(chld_d_end, sysdate) >= to_date('01-JAN-2014')
and chld_c_veri in ('HC','DR')
and nvl(ptct_term, ptct_end) >= to_date('01-JAN-2014')
Когда я запускаю запрос в Oracle, я получаю 505 возвращаемых строк. Когда я выполняю пакет SSIS, вставлено 1,504 строки. По какой-то причине похоже, что SSIS-запрос запроса не ищет предложение where для таблицы ptct (nvl (ptct_term, ptct_end)> = to_date ('01 -JAN-2014 ')), поскольку все дополнительные строки являются строками, которые не имеют действительной записи в таблице рисунка (ptct).
У кого-нибудь есть совет относительно того, что здесь происходит? Первоначальный запрос использовал предложение exists в таблице ptct вместо соединения, но он не работал, поэтому я преобразовал его в соединение. Когда существовало условие существования, аналогичные результаты были видны описанным выше.
Можете ли вы немного расширить свой пакет SSIS? Когда вы отправляете запрос в oracle, выполняете ли вы это с помощью задачи Execute SQL Task, задавая конкретную строку соединения для вашей базы данных Oracle? Или вы используете источник OLEDB? Вы отправляете результаты или просматриваете промежуточную область при выполнении своего пакета? – Phoenix
Я использую задачу потока данных с источником OLE DB, используя диспетчер соединений Oracle. Менеджер соединений Oracle использует Oracle Provider для OLE DB, а db определяется в файле tnsnames.ora. Режим доступа к данным = команда SQL и текст команды SQL = запрос выше. Затем я просто отправляю его в ADO NET Destination, который является подключением SQL Server непосредственно в таблицу с 4 столбцами в запросе. – scottr