Вчера предо мной была поставлена задача - получить из имеющегося sql дампа базы данных mysql - базу данных в mssql. Обратившись к всемирному разуму в виде поисковика google - я нашел решение данной проблемы.
Первоначально, я предположил, что далжна быть в наличии некоторая утилита, позволяющяя решить данную задачу автоматически. Но, к превеликому моему сожалению - я такой не нашел, зато в итоге некоторого количества поисковых запросов (после которых Гугл счел меня роботом и заставил вводить капчу) - я наткнулся на запись в Codeproject.net - Migrate MySQL to Microsoft SQL Server.
Первая необходимая нам для этой задачи вещь - это MySQL ODBC Connector, который можно скачать тут.
Установка и настройка коннектора весьма проста:
- Скачиваете и устанавливаете драйвер
- Открываете ODBC Source Administrator из Control Panel -> Administrative tools. В панели под название system dsn, нажмите кнопку Add:
Появится диалог Create new data source, в котором Вы должны выбрать MySQL ODBC версия_драйвера Driver
Появится диалог настроек подключения к MySQL. Настройте подключение к Вашему MySQL серверу, в принципе, желательно, под учетной записью root.
- Нажмите кнопку Test, чтобы проверить настройки подключения.
Следующий шаг - создание подключения из MSSQL в MySQL
Запустите microsoft sql server 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;) и написал сразу весь скрипт, который это все счастье заимпортировал.