标题是自明的。有没有办法直接做此类进口?

有帮助吗?

解决方案

来自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

此时您已解压缩数据库 - 然后安装

其他提示

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

  1. 打开MySql Workbench
  2. 点击<!>“;数据库迁移<!>”; (如果看起来不必从MySql更新中安装它)
  3. 使用简单向导关注迁移任务列表。
  1. 开SQL服务器管理上的工作室当地机。
  2. 正确的点击数据库文件夹。从弹出式菜单选择新的数据库。
  3. 输入数据库名称,然后点击"确定"。
  4. 右键的新数据库的图标。从弹出的菜单中选择任务-->恢复->的数据库。
  5. 选择从设备选项,然后点击"浏览"按钮。
  6. 点击增加和导航的适当文件。点击"确定"。
  7. 在恢复数据库的窗口中,选择了旁边的你BAK文件。
  8. 关于选择页。选择的复盖现有数据库的选项。点击"确定"。
  9. 验证的内容数据库,该数据库现在是活跃在地方机。

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

希望这会有所帮助

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

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

我使用的方法包括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转储的结果只包括列名...

所以我只是导出了查询结果,如<!>“; select * from users <!> quot;来自SQL Server Management Studio

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

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

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

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

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

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

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

github页面提供了快速安装和示例,以及项目的更详细说明起源可以在这里找到。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top