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






Хотя мой опыт работы с MySQL ограничен, я не думаю, что вам в этом повезет. Однако вы должны иметь возможность перенести все свои данные, восстановив базу данных на сервере MSSQL, а затем создав пакет SSIS или DTS для отправки ваших таблиц и данных на сервер MySQL.
надеюсь это поможет
Я очень в этом сомневаюсь. Возможно, вы захотите использовать DTS / SSIS для этого, как говорит Леви. Можно подумать, что вы, возможно, захотите запустить процесс без фактического импорта данных. Просто сделайте достаточно, чтобы собрать вместе основные структуры таблиц. Затем вы захотите изменить итоговую структуру таблицы, потому что любая структура, которая, вероятно, будет создана, в лучшем случае будет шаткой.
Возможно, вам также придется пойти дальше и создать промежуточную область, которая сначала принимает все данные в виде строки (varchar). Затем вы можете создать сценарий, который выполняет проверку и преобразование, чтобы поместить его в «настоящую» базу данных, потому что две базы данных не всегда хорошо работают вместе, особенно при работе с датами.
Базы данных SQL Server очень проприетарны Microsoft. Я могу придумать два варианта:
Выгрузите базу данных в формате CSV, XML или аналогичном, который вы затем загрузили бы в MySQL.
Установите соединение 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, будучи студентом. Так что у меня точно такой же вопрос.
Ссылка на первую установку программного обеспечения не работает
Вы уверены, что формат файла - MTF? Когда я пытаюсь использовать mtf-инструмент командной строки для отображения содержимого файла .bak, я получаю сообщение об ошибке ...
@ MikhailT. Когда я написал этот ответ почти 10 лет назад, я почти уверен, что использовалась MTF; это могло быть с тех пор изменено.
Мне не удалось найти способ сделать это напрямую.
Вместо этого я импортировал bak-файл в SQL Server 2008 Express, а затем использовал Набор средств миграции MySQL.
Работал как шарм!
Да, импорт у меня работал нормально. Щелкните правой кнопкой мыши узел «базы данных», нажмите «Импорт» - сначала выберите файл BAK, затем выберите базу данных - он автоматически получает имя базы данных из загруженного файла .bak и помещает его в список. (Для создания новой базы данных) Выберите это и нажмите импорт .. Woohoo - 6 дней спустя!
MySQL Migration Toolkit достиг EOL. см. dev.mysql.com/downloads/gui-tools/5.0.html
Функция «Перенос базы данных» теперь является частью MySQL Workbench
Метод, который я использовал, включал часть метода Ричарда Харрисона:
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. Шаги:
MySql Workbench - отстой. Он не может достаточно хорошо обрабатывать кодировки символов
@Sean, если вы видите проблему с MySQL Workbench, отправьте отчет об ошибке. Миграция - дело сложное, поэтому реализациям нужно несколько раундов, чтобы они стали стабильными.
Файл .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 ГБ памяти, и мы сделали все, что могли)
Также стоит отметить, что у них есть `` 7-дневная гарантия возврата денег '', если вы не можете конвертировать свои файлы, и хотя я отправил по электронной почте поддержку с очень подробным объяснением всего, что мы пробовали, и надеясь, что они смогут взглянуть на их сторону в загруженном файле через API, мы все еще не получали от них ответа более двух недель.
также покрыт на dba.stackexchange