标题已经很清楚地说明了问题。是否有一种直接进行此类导入的方法?
标题已经很清楚地说明了问题。是否有一种直接进行此类导入的方法?
SQL服务器的.BAK文件是采用Microsoft Tape Format (MTF)格式存储的(ref:http://www.fpns.net/willy/msbackup.htm)。
.bak文件中可能包含SQL服务器用于存储数据库的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数据管理员”与此导出工具,您将拥有一个包含数据库的SQL脚本。
MySql有一个从Microsoft SQL导入数据库的应用程序。
步骤:对于那些尝试使用Richard上面的解决方案的人,这里有一些额外的信息,可能有助于解决常见错误:
1)当运行restore filelistonly时,您可能会遇到操作系统错误5(拒绝访问)。如果是这种情况,请打开SQL Server Configuration Manager,并将SQLEXPRESS的登录名更改为具有本地写权限的用户。
2)“这将列出备份的内容 - 您需要的是告诉您逻辑名称的第一个字段” - 如果您的文件列表包含两个以上的标题,则还需要考虑在RESTORE DATABASE命令中如何处理这些文件。如果您没有指示除数据库和日志之外的文件应该怎么做,系统似乎会尝试使用.bak文件中列出的属性。从其他人的环境恢复文件将产生“路径具有无效属性。它需要是目录”(因为所涉及的路径在您的计算机上不存在)。 只需提供MOVE语句即可解决此问题。
在我的情况下,有第三个FTData类型文件。我添加的MOVE命令:
MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf',
MOVE 'sysft_...' TO 'c:\temp\other';
SQL Server的.bak文件是特定于该数据库方言的,与MySQL不兼容。
尝试使用etlalchemy将SQL Server数据库迁移到MySQL。这是一个我创建的开源工具,用于在不同的RDBMS之间实现轻松迁移。
所以,安装SQL Server 2008 Express版,
这需要下载Web Platform Installer“wpilauncher_n.exe” 安装后,单击数据库选择(还需要下载框架和运行时)
安装完成后,转到Windows命令提示符并:
我启动了Web平台安装程序,并从“新功能”选项卡中安装了SQL Server Management Studio,浏览了数据库以确保数据存在...使用sqlcmd -S \ SQLExpress(同时作为管理员登录)
然后发出以下命令。
从磁盘还原filelistonly ='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
我非常怀疑这个。你可能想使用DTS/SSIS来完成这个任务,就像Levi所说的那样。你可能想要开始这个过程,但实际上并不导入数据。只需做足够的工作来组合基本表结构。然后,您将需要更改生成的表结构,因为生成的结构可能会很不稳定。
您可能还需要进一步创建一个暂存区,以字符串(varchar)形式首先接收所有数据。然后,您可以创建一个脚本进行验证和转换,以将其放入“真正”的数据库中,因为两个数据库在处理日期时并不总是能很好地协同工作。
SQL Server数据库非常具有Microsoft专有性。我能想到的两个选项是:
将数据库转储为CSV、XML或类似格式,然后加载到MySQL中。
设置ODBC连接到MySQL,然后使用DTS传输数据。正如Charles Graham所建议的那样,在执行此操作之前,您可能需要构建表。但这只需要从SQL Enterprise Manager窗口复制并粘贴到相应的MySQL窗口即可。