如何将 SQLServer.bak 文件导入 MySQL?

题目是不言自明的。有没有直接做这种导入的方法?

239254 次浏览

虽然我的 MySQL 背景是有限的,我不认为你有很大的运气做到这一点。但是,您应该能够通过将数据库还原到 MSSQL 服务器,然后创建 SSIS 或 DTS 包将表和数据发送到 MySQL 服务器来迁移所有数据。

希望这能帮上忙

我深表怀疑。正如 Levi 所说,您可能需要使用 DTS/SSIS 来完成这项工作。有一种想法是,您可能希望在不实际导入数据的情况下启动流程。只要将基本的表结构放在一起就可以了。然后,您需要围绕结果表结构进行更改,因为无论将要创建什么结构,最好的情况也只能是不稳定的。

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

SQLServer 数据库非常微软专有。我能想到的两种选择是:

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

  2. 建立到 MySQL 的 ODBC 连接,然后使用 DTS 传输数据。正如 Charles Graham 所建议的那样,在执行此操作之前可能需要构建表。但是这很容易,只需从 SQLEnterpriseManager 窗口剪切并粘贴到相应的 MySQL 窗口即可。

来自 SQL 服务器的.BAK 文件采用 Microsoft 磁带格式(MTF)参考文件 http://www.fpns.net/willy/msbackup.htm

Bak 文件可能包含 SQL 服务器用于存储数据库的 LDF 和 MDF 文件。

你需要使用 SQL 服务器来提取这些 SQL Server Express。

因此,安装 SQL Server Express 版本,打开 SQL 服务器 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

此时,您已经提取了数据库-然后与 这个出口工具一起安装 微软的“ SqlWeb 数据管理器”。,您将拥有一个包含数据库的 SQL 脚本。

我没有设法找到直接做这件事的方法。

相反,我将 bak 文件导入到 SQLServer2008Express 中,然后使用 移植工具包

非常有效!

我使用的方法包括李察哈里逊方法的一部分:

因此,请安装 SQLServer2008Express 版,

这需要下载 Web 平台安装程序“ wpilauncher _ n.exe” 安装完成后,单击数据库选项(您还需要下载 Framework 和 Runtimes)

安装完成后,去命令提示符:

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

然后发出以下命令。

只从... 恢复文件列表 Disk = ‘ c: temp mydbName-2009-09-29-v10. bak’; 这将列出 你需要的是第一个 告诉您逻辑名称的字段 一个是实际的数据库,另一个是日志文件。

还原数据库 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 平台安装程序,并从 what’s new 选项卡中安装了 SQL Server Management Studio 并浏览了数据库,以确保数据在那里..。

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

因此,我只是从 SQLServerManagementStudio 导出诸如“ select * from users”之类的查询结果

对于那些尝试理查德上述解决方案的人,这里有一些额外的信息,可能有助于导航常见错误:

1)当只运行恢复文件列表时,可能会出现操作系统错误5(访问被拒绝)。如果是这种情况,打开 SQLServer 配置管理器并将 SQLEXPRESS 的登录名更改为具有本地写权限的用户。

2)@“这将列出备份的内容——你需要的是第一个告诉你逻辑名称的字段”——如果你的文件列出超过两个头,你还需要在 RESTORE DATABASE 命令中说明如何处理这些文件。如果您没有指明如何处理数据库和日志之外的文件,系统显然会尝试使用。备份文件。从其他人的环境中还原文件将产生一个‘路径具有无效的属性。它需要是一个目录’(因为有问题的路径在您的计算机上不存在)。 简单地提供一个 MOVE 语句就可以解决这个问题。

在我的例子中有第三个 FTData 类型的文件,我添加了 MOVE 命令:

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

在我的例子中,我实际上必须为第三个文件创建一个新的目录。最初,我试图将它发送到与。Mdf 文件,但是当我执行恢复时,在第三个 FTData 文件上产生了“初始化失败”错误。

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

  1. 打开 MySql 工作台
  2. 点击“数据库迁移”(如果它没有出现,你必须安装它从 MySql 更新)
  3. 使用简单向导跟踪迁移任务列表。

来自 SQLServer 的. bak 文件特定于该数据库方言,并且与 MySQL 不兼容。

尝试使用 炼金术将 SQLServer 数据库迁移到 MySQL。它是一个开源工具,我创建它是为了方便在不同的 RDBMS 之间进行简单的迁移。

Github 主页上提供了快速安装和示例,在 给你中可以找到关于该项目起源的更详细的解释。

在这个问题中,答案没有及时更新。因此,很高兴地说,在2020年迁移到 MsSQLMySQL是那么容易。像 RebaseData这样的在线转换器只需点击一下就可以完成你的工作。您可以只上传您的 .bak文件,这是从 MsSQL和转换成 .sql格式,这是可读的 MySQL

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