Как импортировать файл SQL Server .bak в MySQL? - PullRequest
59 голосов
/ 01 октября 2008

Название говорит само за себя. Есть ли способ напрямую выполнить такой импорт?

Ответы [ 10 ]

65 голосов
/ 01 октября 2008

.BAK файлы с сервера SQL находятся в формате Microsoft Tape Format (MTF) ref: http://www.fpns.net/willy/msbackup.htm

Файл bak, вероятно, будет содержать файлы LDF и MDF, которые SQL-сервер использует для хранения базы данных.

Вам потребуется использовать SQL-сервер для их извлечения. SQL Server Express бесплатен и сделает всю работу.

Итак, установите SQL Server Express edition и откройте SQL Server Powershell. Там выполнить sqlcmd -S <COMPUTERNAME>\SQLExpress (при входе в систему как администратор)

затем введите следующую команду.

restore filelistonly from disk='c:\temp\mydbName-2009-09-29-v10.bak';
GO

Это перечислит содержимое резервной копии - вам нужны первые поля, которые сообщают вам логические имена - одно будет действительной базой данных, а другое - файл журнала.

RESTORE DATABASE mydbName FROM disk='c:\temp\mydbName-2009-09-29-v10.bak'
WITH 
   MOVE 'mydbName' TO 'c:\temp\mydbName_data.mdf', 
   MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf';
GO

На этом этапе вы извлекли базу данных - затем установите Microsoft Sql Web Data Administrator. вместе с этим инструментом экспорта , и у вас будет SQL-скрипт, содержащий базу данных .

8 голосов
/ 09 декабря 2012

MySql есть приложение для импорта БД из Microsoft SQL. Шаги:

  1. Открыть MySql Workbench
  2. Нажмите на «Миграция базы данных» (если она не появляется, вам нужно установить ее из обновления MySql)
  3. Следуйте списку задач миграции с помощью простого мастера.
8 голосов
/ 03 октября 2008

Мне не удалось найти способ сделать это напрямую.

Вместо этого я импортировал файл bak в SQL Server 2008 Express, а затем использовал MySQL Migration Toolkit .

работал как шарм!

3 голосов
/ 21 ноября 2011
  1. Откройте SQL Server Management Studio на локальном компьютере.
  2. Щелкните правой кнопкой мыши папку Базы данных. Во всплывающем меню выберите «Новая база данных».
  3. Введите имя базы данных и нажмите кнопку ОК.
  4. Щелкните правой кнопкой мыши значок новой базы данных. Во всплывающем меню выберите «Задачи» -> «Восстановить» -> «База данных».
  5. Выберите параметр «С устройства», а затем нажмите кнопку обзора.
  6. Нажмите Добавить и перейдите к соответствующему файлу. Нажмите Ok.
  7. В окне Восстановить базу данных установите флажок рядом с вашим файлом BAK.
  8. Перейти на страницу параметров. Установите флажок «Перезаписать существующую базу данных». Нажмите Ok.
  9. Проверьте содержимое базы данных, которая сейчас активна на вашем локальном компьютере.
2 голосов
/ 01 октября 2008

Хотя мой опыт работы с MySQL ограничен, я не думаю, что вам повезло. Однако вы должны иметь возможность перенести все ваши данные, восстановив базу данных на сервере MSSQL, а затем создав пакет SSIS или DTS для отправки ваших таблиц и данных на сервер MySQL.

надеюсь, это поможет

0 голосов
/ 14 октября 2016

Файл .bak с SQL Server специфичен для этого диалекта базы данных и не совместим с MySQL.

Попробуйте использовать etlalchemy для переноса базы данных SQL Server в MySQL. Это инструмент с открытым исходным кодом, который я создал для облегчения миграции между различными СУБД.

Быстрая установка и примеры приведены здесь на странице github , а более подробное объяснение происхождения проекта можно найти здесь .

0 голосов
/ 24 августа 2011

Для тех, кто пытается найти решение Ричарда, приведенное выше, вот некоторая дополнительная информация, которая может помочь в определении распространенных ошибок:

1) При запуске восстановления списка файлов вы можете получить ошибку операционной системы 5 (доступ запрещен). В этом случае откройте диспетчер конфигурации SQL Server и измените имя входа для SQLEXPRESS на пользователя с правами локальной записи.

2) @ "Это будет перечислять содержимое резервной копии - вам нужны первые поля, которые сообщают вам логические имена" - если ваш файл содержит более двух заголовков, вам также необходимо будет указать, что делать с эти файлы в команде RESTORE DATABASE. Если вы не укажете, что делать с файлами за пределами базы данных и журнала, система, очевидно, попытается использовать атрибуты, перечисленные в файле .bak. Восстановление файла из чужой среды приведет к появлению сообщения «Путь имеет недопустимые атрибуты. Это должен быть каталог »(поскольку рассматриваемый путь не существует на вашем компьютере). Простое предоставление оператора MOVE решает эту проблему.

В моем случае был третий тип файла FTData. Команда MOVE, которую я добавил:

MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf',
MOVE 'sysft_...' TO 'c:\temp\other';

в моем случае мне фактически пришлось создать новый каталог для третьего файла. Сначала я пытался отправить его в ту же папку, что и файл .mdf, но при третьем файле FTData при попытке восстановления возникла ошибка «не удалось правильно инициализировать».

0 голосов
/ 19 сентября 2009

Метод, который я использовал, включал часть метода Ричарда Харрисона:

Итак, установите SQL Server 2008 Express издание,

Для этого требуется загрузить установщик веб-платформы "wpilauncher_n.exe" После того, как вы установили это, нажмите на выбор базы данных (вам также необходимо загрузить Frameworks и Runtimes)

После установки перейдите в командную строку Windows и:

используйте sqlcmd -S \ SQLExpress (пока вошли как администратор)

затем введите следующую команду.

восстановить файл только из диск = 'C: \ Temp \ mydbName-2009-09-29-v10.bak'; GO Это будет перечислять содержимое резервное копирование - то, что вам нужно, это первое поля, которые говорят вам логические имена - одна будет действительной базой данных, а другая - файлом журнала.

ВОССТАНОВИТЬ БАЗУ ДАННЫХ mydbName ОТ disk = 'c: \ temp \ mydbName-2009-09-29-v10.bak' С ПЕРЕМЕЩЕНИЕМ 'mydbName' TO 'c: \ temp \ mydbName_data.mdf', MOVE 'mydbName_log' TO 'C: \ Temp \ mydbName_data.ldf'; GO

Я запустил установщик веб-платформы и на новой вкладке установил SQL Server Management Studio и просмотрел базу данных, чтобы убедиться, что данные там есть ...

В этот момент я попробовал инструмент, включенный в MSSQL «Мастер импорта и экспорта SQL», но результат дампа csv включал только имена столбцов ...

Вместо этого я просто экспортировал результаты запросов типа «выбрать * из пользователей» из SQL Server Management Studio

0 голосов
/ 01 октября 2008

Базы данных SQL Server являются собственностью Microsoft. Я могу придумать два варианта:

  1. Дамп базы данных в CSV, XML или аналогичном формате, который вы затем загрузите в MySQL.

  2. Установите соединение ODBC с MySQL, а затем с помощью DTS перенесите данные. Как предположил Чарльз Грэм, вам может потребоваться построить таблицы, прежде чем делать это. Но это так же просто, как вырезать и вставить из окон SQL Enterprise Manager в соответствующее окно MySQL.

0 голосов
/ 01 октября 2008

Я очень сомневаюсь в этом. Возможно, вы захотите использовать DTS / SSIS, чтобы сделать это, как говорит Леви. Можно подумать, что вам может понадобиться запустить процесс без фактического импорта данных. Просто сделайте достаточно, чтобы собрать основные структуры таблиц. Затем вы захотите изменить структуру получаемой таблицы, потому что любая структура, которая будет создана, будет в лучшем случае шаткой.

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

...