如何将Xampp MySQL的200MB数据库转储文件迁移至SQL Server 2014
把200MB MySQL转储迁移到SQL Server 2014的实操步骤
我之前帮同事处理过差不多的需求,整理了两套靠谱的方案,你可以根据自己的情况选:
准备工作(必做)
- 确认SQL Server 2014实例正常运行,预留至少1GB磁盘空间(200MB转储导入后数据库会膨胀不少)
- 把你的MySQL转储文件(.sql格式)放到本地易访问的路径,比如
C:\temp\mysql_backup.sql - 确保你有SQL Server的高权限账户(比如sa),或者至少拥有创建数据库、导入数据的权限
方案一:用SQL Server Migration Assistant (SSMA)(最推荐,省心高效)
这是微软官方的迁移工具,专门解决异构数据库迁移问题,对新手友好:
- 下载适配版本的SSMA:要选支持SQL Server 2014的版本(比如SSMA v8.0或v7.3,新版本可能不再兼容2014),直接微软官网搜就能找到
- 新建迁移项目:
- 打开SSMA,输入项目名(比如“MySQL转SQL Server”),选好本地保存路径
- 目标数据库版本选「SQL Server 2014」
- 连接数据源(MySQL):
- 点击顶部的「Connect to MySQL」,填XAMPP MySQL的信息:服务器
localhost,端口3306,用户名root,密码是你XAMPP设置的(默认空),然后选中要迁移的数据库 - 如果你的MySQL已经停了,先把转储恢复到本地MySQL再连(用命令
mysql -u root -p your_db_name < C:\temp\mysql_backup.sql)
- 点击顶部的「Connect to MySQL」,填XAMPP MySQL的信息:服务器
- 连接目标SQL Server:
- 点击「Connect to SQL Server」,填你的SQL Server实例名(比如
localhost\SQLEXPRESS),认证方式选「SQL Server认证」,输入账户密码,然后选择目标数据库(可以提前新建一个,比如CREATE DATABASE MigratedDB;)
- 点击「Connect to SQL Server」,填你的SQL Server实例名(比如
- 转换数据库架构:
- 在左侧MySQL面板选中要迁移的数据库,右键选「Convert Schema」,等待工具把MySQL的表结构、索引等转换成SQL Server兼容的格式
- 同步架构到SQL Server:
- 转换完成后,在右侧SQL Server面板找到对应数据库,右键选「Synchronize with Database」,确认要同步的对象(表、视图等),执行同步
- 迁移数据:
- 回到左侧MySQL面板,选中数据库右键选「Migrate Data」,可以调整批量大小(比如设为10000,加快迁移速度),然后启动迁移,等待进度条完成
- 验证数据:
- 迁移结束后,对比两边的表行数、关键数据,确保没有丢失或乱码
方案二:手动处理转储+CSV批量导入(适合不想装工具的情况)
如果不想用第三方工具,手动操作也能搞定,就是费点时间:
- 恢复转储到本地MySQL:
打开XAMPP的MySQL命令行,执行:
输入密码后等待恢复完成mysql -u root -p your_database_name < C:\temp\mysql_backup.sql - 导出MySQL表为CSV:
对每个表执行导出命令(注意要给MySQL写入权限到目标目录):SELECT * INTO OUTFILE 'C:\temp\table_name.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM table_name; - 在SQL Server创建对应表结构:
手动把MySQL的表结构转换成SQL Server语法,比如:- MySQL的
INT(11)→ SQL Server的INT - MySQL的
VARCHAR(255)→ SQL Server的NVARCHAR(255)(避免乱码) - 主键、索引也要对应创建,注意SQL Server的保留字(比如
order要改成[order])
- MySQL的
- CSV导入SQL Server:
打开SQL Server Management Studio (SSMS),选中目标数据库:- 右键→「Tasks」→「Import Data」,打开导入向导
- 数据源选「Flat File Source」,找到对应的CSV文件,设置分隔符为逗号,文本限定符为双引号
- 目标选「SQL Server Native Client 11.0」,连接到你的实例和数据库
- 映射字段(确保类型匹配),执行导入,重复直到所有表导入完成
关键注意事项
- 字符集问题:MySQL默认utf8,SQL Server 2014建议用
NVARCHAR存储字符串,或者把数据库排序规则设为Chinese_PRC_CI_AS,避免中文乱码 - 存储过程/函数:如果转储里有这些,需要手动转换成SQL Server语法(两者差异很大,比如MySQL的
DELIMITER在SQL Server里不需要,LIMIT改成TOP) - 大表优化:迁移前把SQL Server恢复模式改成「简单恢复模式」,减少日志生成,迁移完改回「完整恢复模式」
- 超时问题:如果单表数据量大,批量导入时可以调大超时时间,或者分批次导入
内容的提问来源于stack exchange,提问作者IndigoChild




