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

时间:2008-10-01 04:49:54

标签: mysql sql-server migration backup

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

11 个答案:

答案 0 :(得分: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

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

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's "Sql Web Data Administrator".this export tool一起安装,您将拥有一个包含数据库的SQL脚本。

答案 1 :(得分:8)

我没有找到办法直接这样做。

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

像魅力一样工作!

答案 2 :(得分:8)

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

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

答案 3 :(得分:4)

在此问题中,答案无法及时更新。因此,很高兴地说,在2020年迁移到MsSQLMySQL非常容易。像RebaseData这样的在线转换器,一键即可完成您的工作。您可以只上传.bak的{​​{1}}文件,并将其转换为MsSQL可以读取的.sql格式。

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

答案 4 :(得分:3)

  1. 在本地计算机上打开SQL Server Management Studio。
  2. 右键单击“数据库”文件夹。从弹出菜单中,选择“新建数据库”。
  3. 输入数据库名称,然后单击“确定”。
  4. 右键单击新数据库图标。从弹出菜单中,选择任务 - &gt;恢复 - &gt;数据库中。
  5. 选择“从设备”选项,然后单击“浏览”按钮。
  6. 单击“添加”并导航到相应的文件。单击“确定”。
  7. 在“还原数据库”窗口中,选中BAK文件旁边的复选框。
  8. 切换到“选项”页面。选中“覆盖现有数据库”复选框。 单击“确定”。
  9. 验证数据库的内容,该内容现在在本地计算机上处​​于活动状态。

答案 5 :(得分:2)

虽然我的MySQL背景有限,但我认为你没那么幸运。但是,您应该能够通过将数据库还原到MSSQL服务器来迁移所有数据,然后创建SSIS或DTS包以将表和数据发送到MySQL服务器。

希望这会有所帮助

答案 6 :(得分:0)

我非常怀疑。 Levi说,您可能希望使用DTS / SSIS来执行此操作。有人认为您可能想要做的是在不实际导入数据的情况下启动该过程。只需做足以将基本表结构放在一起。然后你会想要改变生成的表结构,因为可能会创建的任何结构都将是最不稳定的。

您可能还需要更进一步,并创建一个暂存区域,该区域首先以字符串(varchar)形式接收所有数据。然后,您可以创建一个执行验证和转换的脚本,使其进入“真实”数据库,因为这两个数据库并不总能很好地协同工作,尤其是在处理日期时。

答案 7 :(得分:0)

SQL Server数据库是Microsoft专有的。我能想到的两个选择是:

  1. 将数据库转换为CSV,XML或类似格式,然后将其加载到MySQL中。

  2. 设置与MySQL的ODBC连接,然后使用DTS传输数据。正如Charles Graham建议的那样,在执行此操作之前,您可能需要构建表。但这就像从SQL企业管理器窗口剪切和粘贴到相应的MySQL窗口一样简单。

答案 8 :(得分:0)

我使用的方法包括Richard Harrison的方法的一部分:

  

因此,安装SQL Server 2008 Express   版,

这需要下载Web平台安装程序“wpilauncher_n.exe” 安装完成后,单击数据库选择(您还需要下载框架和运行时)

安装后,转到Windows命令提示符并执行:

  

使用sqlcmd -S \ SQLExpress(同时   以管理员身份登录)

     

然后发出以下命令。

     

从中恢复文件列表   磁盘= '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

我启动了Web平台安装程序,并从我安装了SQL Server Management Studio的新选项卡中浏览了数据库以确保数据存在...

此时我尝试了MSSQL“SQL导入和导出向导”中包含的工具,但csv转储的结果只包括列名...

因此,我只是从SQL Server Management Studio

导出了诸如“select * from users”之类的查询结果

答案 9 :(得分:0)

对于那些尝试上述理查德解决方案的人,以下是一些可能有助于导航常见错误的其他信息:

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文件上产生了“无法正确初始化”错误。

答案 10 :(得分:0)

SQL Server中的.bak文件特定于该数据库方言,与MySQL不兼容。

尝试使用etlalchemy将SQL Server数据库迁移到MySQL。它是我创建的一个开源工具,可以在不同的RDBMS之间轻松迁移。

the github page上提供了快速安装和示例,可以找到有关项目起源的更详细说明{。{3}}。