Возникли проблемы при оценке поля Oracle rowidtochar () в поле SQL Server nvarchar (18) во время загрузки служб SSIS - PullRequest
0 голосов
/ 06 января 2020

В поисках столь необходимого руководства. Моя конечная цель - постепенно загружать данные из исходной базы данных Oracle в SQL серверную базу данных на основе столбца OBJID с учетом регистра.

Текущая задача потока данных служб SSIS импортируется из базы данных Oracle через ADO. NET и загружает его в серверную базу данных SQL, используя запрос SQL (показан ниже). Исходные данные Oracle содержат уникальный столбец OBJID, который начинается с типа данных ROWID в Oracle. Оператор SQL, используемый для извлечения данных из Oracle, использует функцию ROWIDTOCHAR() для преобразования столбца OBJID для SQL Сервера. Столбец OBJID имеет тип NVARCHAR (Latin1_General_CS_AS) в целевой базе данных SQL Server.

К сожалению, у меня нет исходных данных Created_Date или Modified_Date, чтобы использовать для инкрементальной загрузки ,

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

select objid 
from dbo.target

Однако исходный запрос ADO. NET, похоже, не принимает переменную OBJID в операторе where.

SELECT 
    account_date, emp_id, rowidtochar(objid) as objid 
FROM 
    oracle.source
WHERE 
    rowidtochar(objid) <> CAST('"+ @[User::OBJIDSTG]+"' AS VARCHAR2 (18))

Я также изменил запрос SQL удалив CAST() но получил те же результаты.

Кто-нибудь пробовал это раньше? Я думаю, что моя проблема заключается в типах данных, но я не уверен, где go отсюда.

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