Преобразование файла MySQL .DMP в файл .SQL для MS Sql Server 2005

Я нахожусь на первом месте в проекте, которому потребуется многократно импортировать данные из файлов MySQL * .dmp в существующую базу данных Sql Server. Мне нужны рекомендации в виде существующего инструмента, фреймворка или, за исключением ранее существовавших решений, предложений по дальнейшим действиям.

Моя первая мысль - прочитать файл dmp как текст и выполнить какой-то поиск / замену на нем, чтобы преобразовать соглашения MySQL в сервер SQl, но это звучит беспорядочно, сложно и подвержено ошибкам, поскольку непредвиденные элементы проникают в исходный файл.

Кроме того, эти файлы dmp являются накопительными. Где я могу найти ресурсы для вычисления дельты таблиц как в данных, так и в схемах?

Заранее спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 529
2

Ответы 2

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

В частности, напишите приложение / сценарий, чтобы просмотреть структуру исходной базы данных (в данном случае MySQL) и сгенерировать эквивалентный DDL для целевой базы данных (в данном случае SQL Server). DDL может быть либо сохранен как сценарий для последующего выполнения, либо он может выполняться в реальном времени, если у вас есть возможность подключиться к обеим базам данных одновременно.

Я делал это много раз на протяжении многих лет при самых разных обстоятельствах. По сути, это упражнение в генерации кода в общем случае, поэтому можно извлечь выгоду из использования механизма шаблонов (StringTemplate).

Я нашел это полезным для случаев, когда я обновлял базу данных (с Oracle 6 до 7), а также переключал продукты (например, доступ к SQL Server).

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

С наилучшими пожеланиями.

Обновлено: Я бы НЕ рекомендовал пытаться преобразовать фактические файлы сценариев с помощью какого-либо анализа и перезаписи текста. Я обнаружил, что это было подвержено ошибкам, было чрезвычайно сложно, требовало много времени и в конечном итоге не удалось выполнить определенные виды необходимых преобразований. Позвольте ядрам баз данных сделать это за вас, как я предлагал выше.

На данный момент возможно практически все. И спасибо за совет по переходу на ANSI SQL. Чтобы быть ясным, вы предлагаете приложение, в котором источник извлекается как набор данных (или другая структура), а затем отправляется в пункт назначения, как любое другое приложение?

Rob Allen 20.12.2008 17:06

Если вы используете ADO.NET, вы действительно можете получить источник как DataSet и пройтись по структуре. Но ваш вывод не будет DataSet, потому что он работает только в том случае, если структура уже существует в целевом объекте. Вместо этого создайте DDL для построения этой структуры в целевом объекте.

Rob Williams 21.12.2008 02:47

Я думаю, вам следует загрузить все эти данные в новую установку MySQL, а затем использовать службы интеграции SQL Server для импорта этих данных в SQL Server.

Также, чтобы перенести структуру БД, вы можете взглянуть на этот документ: Технические документы по SQL Server: переход с MySQL, Oracle, Sybase или Microsoft Access на Microsoft SQL Server

Другие вопросы по теме