Как импортировать файл .bak SQL Server в MySQL?

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

также покрыт на dba.stackexchange

David LeBauer 28.06.2012 20:55

Эпический вопрос, братан! Мне, наконец, удалось импортировать файл bak из моего дрянного хостинг-провайдера, где все инструменты SQL были сломаны.

Piotr Kula 06.09.2012 17:52
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
67
2
212 922
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

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

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

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

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

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

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

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

Ответ принят как подходящий

Файлы .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 и откройте 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

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

Проблема в том, что SQL Server 2008 Express Edition может обрабатывать только файлы базы данных размером 10 ГБ и меньше. У меня есть файл размером 30 ГБ, с которым мне нужно работать. Интернет-соединение на работе слишком медленное, чтобы загрузить 4 ГБ .iso-образ полной версии SQL Server 2008 R2, который я бесплатно получаю на сайте dreamspark.com, будучи студентом. Так что у меня точно такой же вопрос.

Geoffrey 12.05.2011 18:21

Ссылка на первую установку программного обеспечения не работает

Brian Leishman 19.05.2015 20:31

Вы уверены, что формат файла - MTF? Когда я пытаюсь использовать mtf-инструмент командной строки для отображения содержимого файла .bak, я получаю сообщение об ошибке ...

Mikhail T. 03.01.2018 23:11

@ MikhailT. Когда я написал этот ответ почти 10 лет назад, я почти уверен, что использовалась MTF; это могло быть с тех пор изменено.

Richard Harrison 05.01.2018 13:07

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

Вместо этого я импортировал bak-файл в SQL Server 2008 Express, а затем использовал Набор средств миграции MySQL.

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

Да, импорт у меня работал нормально. Щелкните правой кнопкой мыши узел «базы данных», нажмите «Импорт» - сначала выберите файл BAK, затем выберите базу данных - он автоматически получает имя базы данных из загруженного файла .bak и помещает его в список. (Для создания новой базы данных) Выберите это и нажмите импорт .. Woohoo - 6 дней спустя!

Piotr Kula 06.09.2012 17:50

MySQL Migration Toolkit достиг EOL. см. dev.mysql.com/downloads/gui-tools/5.0.html

Jakob 13.03.2013 13:45

Функция «Перенос базы данных» теперь является частью MySQL Workbench

dazweeja 12.02.2014 03:05

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

So, install SQL Server 2008 Express edition,

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

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

use sqlcmd -S \SQLExpress (whilst logged in as administrator)

then issue the following command.

restore filelistonly from disk='c:\temp\mydbName-2009-09-29-v10.bak'; GO This will list the contents of the backup - what you need is the first fields that tell you the logical names - one will be the actual database and the other the log file.

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

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

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

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

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

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 возникла ошибка «не удалось правильно инициализировать».

MySql имеет приложение для импорта db из microsoft sql. Шаги:

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

MySql Workbench - отстой. Он не может достаточно хорошо обрабатывать кодировки символов

Xiao 19.10.2013 19:29

@Sean, если вы видите проблему с MySQL Workbench, отправьте отчет об ошибке. Миграция - дело сложное, поэтому реализациям нужно несколько раундов, чтобы они стали стабильными.

Mike Lischke 19.12.2013 12:42

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

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

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

В этой задаче ответ своевременно не обновляется. Поэтому можно с радостью сказать, что в 2020 году Переход с MsSQL на MySQL настолько прост. Онлайн-конвертер, такой как RebaseData, сделает вашу работу одним щелчком мыши. Вы можете просто загрузить файл .bak из MsSQL и преобразовать его в формат .sql, который можно читать в MySQL.

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

Обратите внимание, что мы заплатили за RebaseData, чтобы получить доступ к функциям Premium (поскольку Free позволяет создавать только очень маленькие файлы), и нам не удалось заставить RebaseData работать с нашим файлом .bak размером почти 35 ГБ, что бы мы ни пробовали: инструмент CLI, загрузка через API и т. д. Повсюду практически закончилась нехватка памяти (хотя на нашем сервере 32 ГБ памяти, и мы сделали все, что могли)

Titi 08.12.2020 12:38

Также стоит отметить, что у них есть `` 7-дневная гарантия возврата денег '', если вы не можете конвертировать свои файлы, и хотя я отправил по электронной почте поддержку с очень подробным объяснением всего, что мы пробовали, и надеясь, что они смогут взглянуть на их сторону в загруженном файле через API, мы все еще не получали от них ответа более двух недель.

Titi 08.12.2020 12:40

Другие вопросы по теме