Плохие новости: у вас есть много вариантов
использовать преобразования плоских файлов: извлекать все данные в плоские файлы, манипулировать ими с помощью grep, awk, sed, c, perl в требуемые операторы вставки / обновления и выполнять их для целевой базы данных
PRO: быстро; CON: ужасно уродливый ... кошмар для обслуживания, не делайте этого, если вам это нужно дольше, чем на неделю. И пара десятков казней
использовать чистый sql: я мало что знаю о сервере sql, но я предполагаю, что у него нет доступа к одной базе данных из другой, поэтому один из самых быстрых способов сделать это - записать его как коллекцию операторы вставки / обновления / слияния, снабженные операторами выбора.
PRO: быстро, только одна технология; CON: Требуется прямое соединение между базами данных. Вы можете достичь предела SQL или доступных знаний SQL довольно быстро, в зависимости от типа преобразования.
используйте t-sql или любой другой итеративный язык, который предоставляет база данных, все остальное похоже на чистый SQL-подход.
PRO: довольно быстро, так как вы не покидаете базу данных. CON: я не знаю t-sql, но если это что-то вроде PL / SQL, это не самый хороший язык для сложных преобразований.
используйте язык высокого уровня (Java, C #, VB ...): вы бы загружали свои данные в соответствующие бизнес-объекты, манипулировали ими и сохраняли их в базе данных. В значительной степени то, что вы, кажется, делаете прямо сейчас, хотя кажется, что есть лучшие ORM, например, NHibernate
используйте инструмент ETL: есть специальные инструменты для извлечения, преобразования и загрузки данных. Они часто поддерживают различные базы данных. И иметь много доступных стратегий для принятия решения о наличии обновления или вставки.
PRO: Извините, вам придется попросить кого-то об этом, у меня пока нет ничего, кроме плохого опыта с этими инструментами.
CON: узкоспециализированный инструмент, который вам необходимо освоить. Мой личный опыт: медленнее в реализации и выполнении преобразования, чем рукописный SQL. Кошмар для удобства обслуживания, так как все скрыто в проприетарных репозиториях, поэтому для IDE, контроля версий, CI, тестирования вы застряли с тем, что дает вам инструмент, если таковой имеется.
PRO: Даже сложные манипуляции могут быть реализованы простым и понятным способом, вы можете использовать все модные инструменты, такие как хорошие IDE, Testing Frameworks, CI Systems, чтобы поддержать вас при разработке преобразования.
CON: Это добавляет много накладных расходов (извлечение данных, из базы данных, создание экземпляров объектов и сортировка объектов обратно в целевую базу данных. Я бы пошел по этому пути, если это процесс, который собирается быть вокруг долгое время.
Опираясь на последний вариант, вы можете еще больше прославить архитектуру, используя обмен сообщениями и веб-сервисы, что может иметь значение, если у вас есть более одной исходной базы данных или более одной целевой базы данных. Или вы могли бы вручную реализовать многопоточный преобразователь, чтобы получить через пут. Но я думаю, что я покидаю сферу вашего вопроса.