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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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