Перемещение данных из Oracle в SQL Server 2008 - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть данные в таблице в Oracle на одном сервере, которые я хочу ежедневно копировать в таблицу в SQL Server 2008 на другом сервере.

Мое решение (которое работает хорошо, но несколько громоздко) выглядит следующим образом:

Я запускаю следующий пакетный файл на компьютере Oracle

dumpdata --schema=mydb/mypassword --source-query="select * from MyTable" 
MyTable >> q:\output1.sql

dumpData происходит из пакета cx_OracleTools, а q: сетевой диск на компьютере с SQL Server

Затем я запускаю следующий пакетный файл на компьютере с SQL Server

sqlcmd -i before.sql
ssr.exe 0 "to_date(" "convert(datetime," output1.sql
ssr.exe 0 "'YYYY-MM-DD HH24:MI:SS'" "101" output1.sql
ssr.exe 0 ");" "); /SSR_NL/ GO /SSR_NL/" output1.sql
sqlcmd -i output1.sql -o error.txt

В первой строке запускается SQL, который удаляет строки из таблицы в базе данных SQL Server. Вторая, третья и четвертая строки преобразуют даты в формат, понятный SQL Server. Пятая строка импортирует строки в базу данных SQL Server.

Теперь подпрограмма dumpData (поскольку она создает операторы INSERT) создает огромные файлы, поэтому я изменил dumpData для выполнения следующих действий:

dumpdata --schema=mydb/mypassword --source-query="select * from MyTable 
where to_char(update_date,'yyyy')='2012'" MyTable >> q:\output1.sql

Теперь у меня есть поле update_date в таблице, которое изменяется при каждом обновлении строки. Поэтому я подумал, что скопирую только те строки, которые изменились в 2012 году (это управляемый размер), и импортирую их в базу данных SQL Server.

Однако для меня недостаточно удалить те строки в базе данных SQL Server, которые изменились в 2012 году в базе данных SQL Server, а затем выполнить импорт. Мне нужно удалить все те строки в базе данных SQL Server, которые были изменены в 2012 году в базе данных Oracle.

Если бы я мог как-то преобразовать свой текстовый файл INSERTS в UPSERT (см. Решения для INSERT ИЛИ ОБНОВЛЕНИЯ на SQL Server ), тогда моя проблема была бы решена.

В качестве альтернативы, я мог бы использовать SSIS 2008.

У кого-нибудь есть простые идеи, как я могу настроить свое существующее решение для работы?

Спасибо ...

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