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

时间:2020-03-06 14:57:41  来源:igfitidea点击:

标题不言自明。是否可以直接进行这种导入?

解决方案

尽管我的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中导出了诸如"从用户中选择*"之类的查询结果