标题是自我解释的。有没有办法直接进行这种导入?
答案 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)
答案 2 :(得分:8)
MySql有一个从microsoft sql导入db的应用程序。 步骤:
答案 3 :(得分:4)
在此问题中,答案无法及时更新。因此,很高兴地说,在2020年迁移到MsSQL
到MySQL
非常容易。像RebaseData这样的在线转换器,一键即可完成您的工作。您可以只上传.bak
的{{1}}文件,并将其转换为MsSQL
可以读取的.sql
格式。
附加说明:This不仅可以转换您的MySQL
文件,而且该站点适用于您想要的所有类型的数据库迁移。
答案 4 :(得分:3)
答案 5 :(得分:2)
虽然我的MySQL背景有限,但我认为你没那么幸运。但是,您应该能够通过将数据库还原到MSSQL服务器来迁移所有数据,然后创建SSIS或DTS包以将表和数据发送到MySQL服务器。
希望这会有所帮助
答案 6 :(得分:0)
我非常怀疑。 Levi说,您可能希望使用DTS / SSIS来执行此操作。有人认为您可能想要做的是在不实际导入数据的情况下启动该过程。只需做足以将基本表结构放在一起。然后你会想要改变生成的表结构,因为可能会创建的任何结构都将是最不稳定的。
您可能还需要更进一步,并创建一个暂存区域,该区域首先以字符串(varchar)形式接收所有数据。然后,您可以创建一个执行验证和转换的脚本,使其进入“真实”数据库,因为这两个数据库并不总能很好地协同工作,尤其是在处理日期时。
答案 7 :(得分:0)
SQL Server数据库是Microsoft专有的。我能想到的两个选择是:
将数据库转换为CSV,XML或类似格式,然后将其加载到MySQL中。
设置与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}}。