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





Мой предпочтительный подход к преобразованию структуры базы данных из одного механизма базы данных в другой включает создание простого приложения для этой цели, особенно если оно должно быть динамическим (структура меняется со временем) и повторяющимся. Возможно ли это в вашей ситуации?
В частности, напишите приложение / сценарий, чтобы просмотреть структуру исходной базы данных (в данном случае MySQL) и сгенерировать эквивалентный DDL для целевой базы данных (в данном случае SQL Server). DDL может быть либо сохранен как сценарий для последующего выполнения, либо он может выполняться в реальном времени, если у вас есть возможность подключиться к обеим базам данных одновременно.
Я делал это много раз на протяжении многих лет при самых разных обстоятельствах. По сути, это упражнение в генерации кода в общем случае, поэтому можно извлечь выгоду из использования механизма шаблонов (StringTemplate).
Я нашел это полезным для случаев, когда я обновлял базу данных (с Oracle 6 до 7), а также переключал продукты (например, доступ к SQL Server).
Вы также можете рассмотреть вариант таргетинга на ANSI SQL, который будет работать для большинства баз данных, за исключением случаев, когда вы используете настраиваемые функции базы данных (которые должны быть сведены к минимуму).
С наилучшими пожеланиями.
Обновлено: Я бы НЕ рекомендовал пытаться преобразовать фактические файлы сценариев с помощью какого-либо анализа и перезаписи текста. Я обнаружил, что это было подвержено ошибкам, было чрезвычайно сложно, требовало много времени и в конечном итоге не удалось выполнить определенные виды необходимых преобразований. Позвольте ядрам баз данных сделать это за вас, как я предлагал выше.
Если вы используете ADO.NET, вы действительно можете получить источник как DataSet и пройтись по структуре. Но ваш вывод не будет DataSet, потому что он работает только в том случае, если структура уже существует в целевом объекте. Вместо этого создайте DDL для построения этой структуры в целевом объекте.
Я думаю, вам следует загрузить все эти данные в новую установку MySQL, а затем использовать службы интеграции SQL Server для импорта этих данных в SQL Server.
Также, чтобы перенести структуру БД, вы можете взглянуть на этот документ: Технические документы по SQL Server: переход с MySQL, Oracle, Sybase или Microsoft Access на Microsoft SQL Server
На данный момент возможно практически все. И спасибо за совет по переходу на ANSI SQL. Чтобы быть ясным, вы предлагаете приложение, в котором источник извлекается как набор данных (или другая структура), а затем отправляется в пункт назначения, как любое другое приложение?