使用 Navicat Premium 将 SQL Server 迁移到 MySQL
当需要将 SQL Server 数据库迁移至 MySQL 时,若需保持原表结构且担心 Navicat 自动转换的类型不匹配,可采用「工具生成脚本 + Navicat 导入」的组合方式。Navicat Premium 提供便捷的 ODBC 数据导入功能,适合处理大量历史数据;而 mss2sql 能精准识别并转换 T-SQL 语法为 MySQL 兼容语句。该方法兼顾了效率与准确性,是中小规模数据库迁移的实用方案。
操作目标
本指南旨在指导用户利用 Navicat Premium 的“导入向导”功能,配合第三方辅助工具,将本地或局域网内的 SQL Server 数据库完整迁移至 MySQL。重点解决直接导入时数据类型不兼容及远程连接不稳定问题,最终实现数据无损转移。
准备条件
- 软件环境:
Navicat Premium(支持多数据库类型的图形化客户端)。mss2sql(用于将 SQL Server 表定义转换为 MySQL 兼容语句的小工具)。
- 网络连接:
- 建议将 SQL Server 实例移至本地运行,或通过 ODBC 配置稳定的局域网连接。直接跨公网操作可能因网络波动导致传输中断。
- 权限要求:
- 拥有 SQL Server 数据库的读取权限(Read-only)。
- 拥有 MySQL 目标库的写入及建表/删表权限。
具体操作步骤
第一步:配置 ODBC 数据源
目的:建立 Navicat 与 SQL Server 之间的底层通信桥梁。
入口:打开 Navicat Premium → 新建连接 → 选择 ODBC。
动作:
1. 在系统 DNS 或用户 DNS 中创建新的 ODBC 数据源,指向你的 SQL Server 服务器地址、端口及账号密码。
2. 回到 Navicat 界面,选择刚才创建的 ODBC 数据源进行连接测试。
第二步:创建 MySQL 目标库
目的:为目标数据提供一个同名的接收容器。
入口:Navicat 左侧导航栏 → 右键点击 MySQL 连接 → 新建数据库。
参数:
- 字符集建议使用 utf8mb4 以兼容所有 Unicode 字符。
- 排序规则推荐 utf8mb4_general_ci。
第三步:启动导入向导
目的:引导用户逐步完成数据抽取与加载。
入口:在已创建的 MySQL 同名数据库上点击鼠标右键 → 选择 导入向导 (Import Wizard)。
参数:
- 数据源格式:选择 ODBC。
第四步:执行映射与确认导入
目的:处理字段对应关系并排除无效数据。
动作:
1. 连续点击“下一步”,直至进入字段映射界面。
2. **关键设置**:如果遇到不想导入的历史脏数据,或某些字段类型导致报错,可在该界面设置查询过滤条件(例如:WHERE update_time > '2023-01-01')来精简数据量。
3. 检查完毕后,点击开始执行。
第五步:验证结果
目的:确保数据完整到达。
操作:导入完成后,展开新数据库下的表列表,随机查看几条记录的字段内容是否与源 SQL Server 一致。
排错与建议:处理类型转换冲突
在实际操作中,Navicat 的 ODBC 直连导入虽然速度快,但对 SQL Server 特有的复杂数据类型(如特定的 XML 字段、自增主键约束或存储过程逻辑)转换支持不佳,可能导致结构错误或数据截断。
如果遭遇此类问题,推荐采用以下更稳妥的组合方案:
- 先转换结构:使用开源工具
mss2sql,将 SQL Server 中的表结构定义导出为 MySQL 兼容的 SQL 脚本。这能精确控制字段类型(如将nchar转为varchar)。在 MySQL 中手动执行该脚本建表。 - 再导入数据:在上述步骤创建的空表中,重复执行前述的
NavicatODBC 导入流程。此时由于目标表结构已由工具预先调整,仅需搬运数据,速度更快且出错率极低。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









