如何将SQL Server .bak文件导入MySQL?
标题不言自明。是否可以直接进行这种导入?
解决方案
尽管我的MySQL背景有限,但我认为我们这样做并没有太大的运气。但是,通过将数据库还原到MSSQL服务器,然后创建SSIS或者DTS包以将表和数据发送到MySQL服务器,我们应该能够迁移所有数据。
希望这可以帮助
我对此表示高度怀疑。我们可能想要使用DTS / SSIS来执行此操作,如Levi所说。我们可能想做的就是在不实际导入数据的情况下启动该过程。做足够的工作以使基本表结构结合在一起。然后,我们将要更改生成的表结构,因为任何可能创建的结构tat最多都是不稳定的。
我们可能还需要更进一步,创建一个暂存区域,该暂存区域首先以字符串(varchar)形式接收所有数据。然后,我们可以创建一个执行验证和转换的脚本,以将其放入"真实"数据库,因为这两个数据库并不总是可以很好地协同工作,尤其是在处理日期时。
SQL Server数据库是Microsoft专有的。我可以想到的两个选择是:
- 以CSV,XML或者类似格式转储数据库,然后将其加载到MySQL中。
- 设置与MySQL的ODBC连接,然后使用DTS传输数据。正如Charles Graham所建议的那样,我们可能需要先构建表才能执行此操作。但这就像从SQL Enterprise Manager窗口中剪切并粘贴到相应的MySQL窗口一样容易。
来自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的" Sql Web Data Administrator"。连同此导出工具,我们将拥有一个包含数据库的SQL脚本。
我没有设法直接做到这一点。
相反,我将bak文件导入到SQL Server 2008 Express中,然后使用MySQL Migration Toolkit。
像魅力一样工作!
我使用的方法包括Richard Harrison方法的一部分:
So, install SQL Server 2008 Express edition,
这需要下载Web平台安装程序" wpilauncher_n.exe"
安装完成后,单击数据库选择(还需要下载Frameworks and Runtimes)
安装后,转到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
我启动了Web Platform Installer,并从"新增功能"选项卡中安装了SQL Server Management Studio,并浏览了数据库以确保数据在那里。
那时我尝试了MSSQL" SQL导入和导出向导"附带的工具,但是csv转储的结果仅包含列名...
因此,相反,我只是从SQL Server Management Studio中导出了诸如"从用户中选择*"之类的查询结果