SQL SERVER 数据库迁移MY SQL

要将 SQL Server 数据库 HS_ERP_2025_TEST 生成脚本并迁移到 MySQL,需分步骤处理结构、数据及程序逻辑的转换。以下是完整流程和工具建议:


🔧 一、生成 SQL Server 数据库脚本(使用 SSMS)

  1. ​连接数据库​
    • 打开 SQL Server Management Studio (SSMS),连接到目标实例,展开数据库节点。
  2. ​启动生成脚本向导​
    • 右键点击 HS_ERP_2025_TEST → ​​“任务” → “生成脚本”​​。
  3. ​配置导出选项​
    • ​选择对象​​:勾选“整个数据库及所有对象”或按需选择表/视图/存储过程等。

    • ​脚本选项​​(关键设置):
      • ​输出类型​​:保存为 .sql 文件。
      • ​高级选项​​ → ​​“要编写脚本的数据的类型”​​:
        • 仅限架构(导出表结构) → 后续需单独迁移数据。
        • 架构和数据(导出表结构+数据) → 适合小数据量。
      • ​编写索引/外键/触发器等脚本​​:按需勾选(默认勾选索引和外键)。
    • ​保存路径​​:指定脚本输出位置。

⚙️ 二、转换脚本为 MySQL 兼容格式

导出的 SQL Server 脚本需手动或工具转换语法和数据类型:

1. ​​数据类型映射​
SQL Server 类型MySQL 类型
NVARCHARVARCHAR
DATETIMEDATETIME/TIMESTAMP
BITTINYINT(1)
UNIQUEIDENTIFIERCHAR(36) (UUID)
2. ​​函数与语法替换​
  • GETDATE()NOW()
  • ISNULL(col,0)IFNULL(col,0)
  • TOP 100LIMIT 100
  • 删除 [dbo]. 前缀和 [ ] 符号。
3. ​​工具辅助转换​
  • ​SQLines​​:粘贴 SQL Server 脚本到左侧,自动转译基础语法。
  • ​SchemaZen​​(命令行):批量生成并转换脚本:
    SchemaZen.exe script --server localhost --database HS_ERP_2025_TEST --scriptDir C:\mysql_scripts

📥 三、导入 MySQL 数据库

  1. ​创建目标数据库​
    CREATE DATABASE HS_ERP_2025_TEST DEFAULT CHARSET=utf8mb4;
  2. ​执行转换后的脚本​
    • 通过 MySQL Workbench 的 ​​“File” → “Run SQL Script”​​ 导入。
    • 或使用命令行:
      mysql -u root -p HS_ERP_2025_TEST < C:\mysql_scripts\converted.sql

🚨 四、迁移数据与程序逻辑

1. ​​数据迁移​
  • ​小数据量​​:直接用 SSMS 导出时选择“架构和数据”。
  • ​大数据量​​:
    • 导出为 CSV:SSMS 向导或 bcp 工具。
    • MySQL 导入:LOAD DATA INFILE 或 Workbench 的 ​​“Data Import”​​。
2. ​​存储过程/触发器迁移​
  • ​手动重写​​:因语法差异大(如 T-SQL 变量声明、游标逻辑)。
  • ​示例转换​​:
    -- SQL Server
    CREATE PROCEDURE GetOrders AS SELECT * FROM Orders;
    -- MySQL
    DELIMITER $$
    CREATE PROCEDURE GetOrders() BEGIN SELECT * FROM Orders; END 
  DELIMITER ;
  ```

#### 3. **视图与函数**  
- 检查是否包含 SQL Server 特有函数(如 `ROW_NUMBER()`),替换为 MySQL 等效写法(如变量模拟)。

---

### ✅ 五、迁移后验证
1. **数据一致性**  
   - 对比记录数:`SELECT COUNT(*) FROM table`。  
   - 校验关键字段:抽样检查金额、日期等字段。  
2. **性能测试**  
   - 使用 `sysbench` 压测查询响应时间。  
3. **应用测试**  
   - 确保应用连接 MySQL 后功能正常,尤其注意大小写敏感问题(MySQL Linux 默认区分大小写)。

---

### ⚠️ 六、注意事项
1. **字符集统一**  
   - MySQL 全程使用 `utf8mb4`,避免中文乱码。  
2. **自增主键处理**  
   - SQL Server:`IDENTITY(1,1)` → MySQL:`AUTO_INCREMENT`。  
3. **禁用 SQL Server 特有特性**  
   - 如计算列、XML 数据类型需重构。  

---

### 💎 推荐工具总结
| **工具**               | **用途**                     | **适用场景**               |  
|------------------------|------------------------------|--------------------------|  
| **SSMS 生成脚本**       | 导出表/视图/存储过程定义      | 基础结构迁移              |  
| **SQLines**            | 自动转换数据类型和基础语法    | 快速转译简单脚本          |  
| **MySQL Workbench**    | 数据导入/导出 + 连接测试     | 全流程可视化操作          |  
| **SchemaZen**          | 命令行批量生成与转换脚本      | 自动化部署需求            |  

> 迁移复杂数据库时,**优先迁移表结构和数据**,存储过程/触发器单独重写。若数据量超 10GB,建议分批次导出或使用 ETL 工具(如 AWS DMS)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值