如何将SQL Server .bak文件导入MySQL?

Mar*_*cel 60 mysql sql-server migration backup

标题是自我解释的.有没有办法直接进行这种导入?

Ric*_*son 65

SQL Server中的.BAK文件采用Microsoft磁带格式(MTF)参考:http://www.fpns.net/willy/msbackup.htm

bak文件可能包含SQL Server用于存储数据库的LDF和MDF文件.

您将需要使用SQL Server来提取这些.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
Run Code Online (Sandbox Code Playgroud)

这将列出备份的内容 - 您需要的是第一个告诉您逻辑名称的字段 - 一个是实际数据库,另一个是日志文件.

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
Run Code Online (Sandbox Code Playgroud)

此时您已解压缩数据库 - 然后安装Microsoft的"Sql Web数据管理员".此导出工具一起,您将拥有一个包含数据库的SQL脚本.

  • 问题是SQL Server 2008 Express Edition只能处理10GB或更小的数据库文件.我有一个30GB的文件,我必须使用.工作中的Internet连接速度太慢,无法下载完整SQL Server 2008 R2版本的4GB .iso映像,我可以从dreamspark.com免费获得该版本.所以我有同样的问题. (3认同)

Mar*_*cel 8

我没有找到办法直接做到这一点.

相反,我将bak文件导入SQL Server 2008 Express,然后使用MySQL Migration Toolkit.

像魅力一样工作!

  • “数据库迁移”功能现在是 [MySQL Workbench](http://dev.mysql.com/downloads/tools/workbench/) 的一部分 (2认同)

Aut*_*dad 8

MySql有一个从microsoft sql导入db的应用程序.脚步:

  1. 打开MySql Workbench
  2. 单击"数据库迁移"(如果看不到,则必须从MySql更新安装)
  3. 使用简单向导执行迁移任务列表.

  • @Sean,如果您发现MySQL Workbench有问题,请提交错误报告.迁移是一个复杂的问题,因此实现需要几轮才能变得稳定. (9认同)
  • MySql Workbench糟透了.它不能很好地处理字符编码 (2认同)

Ind*_*ake 6

在这个问题中,答案没有及时更新。所以很高兴地说,在 2020 年迁移MsSQLMySQL这里非常容易。像RebaseData这样的在线转换器将一键完成您的工作。您只需上传来自的.bak文件MsSQL并将其转换.sql为可读的格式即可MySQL

附加说明:不仅可以转换您的.bak文件,而且该站点还适用于您想要的所有类型的数据库迁移。

  • 请注意,我们付费购买了 RebaseData 来访问高级功能(因为免费版只能让您处理非常小的文件),并且无论我们尝试什么,我们都无法让 RebaseData 处理我们近 35GB 的 .bak 文件:CLI 工具,通过 API 等上传。它几乎到处都耗尽了内存(即使我们的服务器有 32GB 内存,并且我们竭尽全力) (3认同)
  • 另外值得注意的是,如果您无法转换文件,他们有“7 天退款保证”,尽管我通过电子邮件向支持人员发送了我们尝试过的所有内容的非常详细的解释,并希望他们能够看看他们这边通过 API 上传的文件后,我们已经 2 周多没有收到他们的回复了。 (3认同)