Перейти к содержимому

Миграция баз данных (MySQL -> MSSQL)

Вчера предо мной была поставлена задача - получить из имеющегося sql дампа базы данных MySQL - базу данных в MSSQL. Обратившись к всемирному разуму в виде поисковика Google - я нашел решение данной проблемы.

Вчера предо мной была поставлена задача - получить из имеющегося sql дампа базы данных - базу данных в MSSQL. Обратившись к всемирному разуму в виде поисковика - я нашел решение данной проблемы.

Первоначально, я предположил, что далжна быть в наличии неорая утилита, позволяющяя решить данную задачу автоматически. Но, к превеликому моему сожалению - я такой не нашел, зато в итоге некоторого количества поисковых запросов (после которых Гугл счел меня роботом и заставил вводить капчу) - я наткнулся на запись в Codeproject. - Migrate MySQL to Microsoft SQL Server.

Первая необходимая нам для этой задачи вещь - это MySQL ODBC Connector, который можно скачать тут.

Установка и настройка коннектора весьма проста:

  1. Скачиваете и устанавливаете драйвер
  2. Открываете ODBC Source Administrator из Control Panel -> Administrative tools. В панели под название , нажмите кнопку Add:
    Появится диалог Create new , в котором Вы должны выбрать MySQL ODBC версия_драйвера Driver
    Появится диалог настроек подключения к MySQL. Настройте подключение к Вашему MySQL серверу, в принципе, желательно, под учетной записью root.
  3. Нажмите кнопку Test, чтобы проверить настройки подключения.

Следующий шаг - создание подключения из MSSQL в MySQL

Запустите Management Studio и выполните скрипт:

EXEC master.dbo.sp_addlinkedserver
@server = N'MYSQL',
@srvproduct=N'MySQL',
@provider=N'MSDASQL',
@provstr=N'DRIVER={MySQL ODBC 5.1 Driver}; SERVER=localhost; _
	DATABASE=tigerdb; USER=root; PASSWORD=hejsan; OPTION=3'

Скрипт создаст линк к MySQL использую установленный коннектор. Линк, Management Studio будет выглядеть приблизительно так:
Импорт данных из MySQL в MSSQL

Создайте новую базу данных (в примере она названа testMySQL). В Query window выполните следующий запрос для импорта таблицы shoutbox из MySQL базы tigerdb в MSSQL базу testMySQL:

SELECT * INTO testMySQL.dbo.shoutbox
FROM openquery(MYSQL, 'SELECT * FROM tigerdb.shoutbox')

Вот и все, далее, в зависимости от Ваших собственных навыков - или повторите вышеуказанный скрипт необходимое количество раз, или ...

Я, например, просто получил список всех табличек в MySQL базу (show tables;) и написал сразу весь скрипт, который это все счастье заимпортировал.