2012-06-08 2 views
6

Я хочу написать пакет SSIS для копирования данных с сервера oracle на сервер MS Sql. а также условие: данные, которые нужно переместить из oracle в SQL, будут известны, выбрав таблицу в SQL. В основном Table1.Column1 на SQL-сервере должен быть заполнен из oracle, если значение не существует в этой таблице в SQL Server. мы также имеем общее значение столбца в этой таблице для сопоставления записи с сервером sql и oracle. поэтому для этого я планировал сделать это в пакете SSIS.Создать пакет SSIS - скопировать данные из Oracle на SQL Server

Может ли кто-нибудь объяснить мне подробно, как создать пакет SSIS для вышеупомянутого сценария.

Заранее благодарю вас за помощь.

+0

Какую версию ssis вы используете? – praveen

ответ

10

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

Дизайн Design

1.Using SSIS 2005

  1. Перетащите OleDB источник и указывать на базу данных Oracle и выберите таблицу.
  2. Перетащите поиск и выберите соединение SQL Server и укажите его таблицу.
  3. В столбце столбцов соедините общий столбец и выберите столбцы в правой части, которые вам нужно получить. Lookup
  4. Нажмите «Настроить вывод ошибки» и выберите строку переадресации для столбца объединения. Lookup
  5. Перетащите команду Oledb и подключите ее к выходу ошибки из поиска. 6.Write в заявлении вставки в Command OLEDB Oledb Oledb

2.Ела вы используете SSIS 2008, то нет необходимости конфигурировать устройство вывода ошибок в поиске не .Just перетащить никакого вывода совпадения с Lookup для SQL Server место назначения.

+0

вам не нужен OleDbcommnad, вы можете использовать oledbdestination. Я думаю, что это проще и быстрее. – Diego

+0

Да, вы правы. Это можно сделать без OledbCommand. – praveen

+0

привет, Praveen. Спасибо, очень понравилось, что я работал, как и ожидал, и это действительно помогло мне. Одна проблема, с которой я сталкиваюсь, - это когда я сопоставляю столбцы с sql-сервера и оракула в поиске. один из столбцов имеет различный тип данных, поэтому он не является списком, который должен отображать столбец с именем «ID», но у нас есть ID как int на SQL-сервере, а столбец сопоставления для «ID» в Oracle находится в varchar. так как я могу его сопоставить. –

3

Я предлагаю this осуществления.

Я использовал решение praveen, но иногда это может быть не самое лучшее. Специально как число, если записи по месту назначения растут. Кроме того, он не касается «обновлений»

+0

Привет, Спасибо за ваши ответы. Я хочу знать, возможно ли следующее, и если да, пожалуйста, объясните подробно. Благодарю. В SQL у нас есть Table1, у которого много деталей соединения с сервером Oracle. нам нужно скопировать данные из Oracle.Table5 в SQl.Table5. условие находится в SQL.Table5, я знаю имя фабрики и используя имя фабрики, я могу получить информацию о сервере oracle в SQL.Table1. поэтому, используя эту информацию, мне нужно подключиться к oracle и получить соответствующие данные, а затем обновить в Sql.Table5. Возможно ли это в пакете SSIS? –

+0

@ Diego Я пошел через блог Энди. Это лучшая реализация Загрузка данных в SQL-сервер. Его дополнительное преобразование Split делает разницу с решением, которое я опубликовал. Я мог бы использовать промежуточную таблицу для заполнения обновленных данных с помощью Oledb destination а затем в потоке управления используется выполнение sql-задачи для загрузки в таблицу назначения. Таким образом, я могу добиться большей производительности, избегая приведения строки за строкой (что делается в блоге Энди с помощью команды Oledb) и выполняет пакетную операцию с использованием Execute Задача SQL – praveen

Смежные вопросы