如何将SQL MDF数据库文件迁移导入至MariaDB
MariaDB读取.MDF文件及迁移方案解答
基础认知澄清
- .MDF是微软SQL Server专属的主数据存储文件,属于SQL Server的私有存储格式,MariaDB本身没有任何原生功能可以直接打开、读取这种格式的文件,你之前没找到官方相关说明不是搜索遗漏,是这个功能本身就不存在。
- 你提到的通过dump方式迁移的方案完全可行,也是目前免费迁移最稳妥的方案,不存在高门槛,新手跟着步骤操作就能完成。
面向新手的免费迁移操作步骤
方案1:SQL脚本dump迁移(推荐,全量免费无限制)
整个流程的逻辑非常简单:先把锁在.MDF里的内容通过SQL Server读出来,导出成所有数据库都能识别的通用SQL语句文件,再让MariaDB执行这个文件把数据全部重建出来,全程不需要用付费第三方工具。
- 先读取.MDF文件内容
安装微软官方免费的SQL Server Express版本,将本地的.MDF文件附加到本地运行的SQL Server实例中,确认可以正常看到库内的所有表、数据,没有文件损坏问题。 - 导出兼容的dump脚本文件
在SQL Server的管理工具中选中目标数据库,右键依次选择「任务」-「生成脚本」,按照向导操作:- 选择需要迁移的全部表、视图等对象
- 进入高级设置项,将「脚本编写的数据类型」修改为架构和数据(只选架构的话导出的只有空表结构,没有实际存储的数据),同时将脚本兼容级别调整到较低版本,尽量规避SQL Server专属的特殊语法,减少后续导入报错概率
- 导出得到后缀为
.sql的dump脚本文件
- 导入到MariaDB
打开你用的MariaDB管理工具(新手推荐用HeidiSQL这类免费可视化工具,比敲命令行简单很多),新建一个空数据库,选中这个库后直接运行刚才导出的.sql文件,等待脚本执行完成就完成了全量迁移。
方案2:CSV格式中转导入(仅适合极小体量数据库)
你查到的MariaDB支持CSV导入的信息是准确的,但这个方案只适合只有几张表的小型数据库,操作步骤如下:
- 同样先把.MDF附加到SQL Server中,把每一张表的内容单独导出为CSV格式文件
- 在MariaDB中手动创建和原表结构一致的空表,注意做好字段类型匹配(比如SQL Server的
nvarchar类型对应MariaDB的varchar类型) - 用MariaDB自带的
LOAD DATA INFILE命令,或者可视化工具的CSV导入功能,把每个CSV文件对应导入到建好的表中即可
注意:这个方案需要手动建表,表数量多的话重复工作量极大,且容易出现字段类型匹配错误,表量超过10张不推荐使用。
新手避坑提示
- 不要尝试直接修改.MDF后缀、或者强行把文件拷贝到MariaDB的数据目录下读取,两个数据库的底层存储逻辑完全不同,这类操作大概率会损坏原始数据文件
- 如果导入dump脚本时出现少量语法报错,一般是脚本里带了SQL Server独有的函数或语法,只需要把报错的语句修改为MariaDB支持的写法即可,不会影响整体数据迁移
- 不要使用需要付费的第三方在线转换工具处理包含敏感业务数据的.MDF文件,存在数据泄露风险
内容的提问来源于stack exchange,提问作者ccuser
相关产品推荐
相关产品推荐

