HaniBlindBox/.kiro/specs/database-migration/tasks.md
2026-01-02 05:18:05 +08:00

523 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Implementation Plan: Database Migration
## Overview
本任务清单将 MySQL 5.7 到 SQL Server 2022 的数据库迁移分解为可执行的编码任务。每个任务都是增量式的,确保迁移过程可控、可验证。
## 当前状态
- **SQL Server 数据库**: honey_box 已创建38个表结构已完成
- **MySQL 源数据库**: youdas包含 82 个表,核心业务数据完整
- **数据迁移进度**: 部分完成,详见下方任务状态
### 迁移进度摘要
| 表名 | MySQL记录数 | SQL Server记录数 | 状态 |
|-----|------------|-----------------|------|
| users | 2,202 | 2,202 | ✅ 完成 |
| user_accounts | 3,452 | 3,452 | ✅ 完成 |
| user_login_logs | 11,584 | 11,584 | ✅ 完成 |
| user_addresses | 51 | 51 | ✅ 完成 |
| goods | 503 | 0 | 未迁移 |
| goods_items | 1,852 | 1,852 | ✅ 完成 |
| goods_types | 13 | 0 | 未迁移 |
| goods_extensions | 34 | 0 | 未迁移 |
| prize_levels | 106 | 106 | ✅ 完成 |
| orders | 15 | 15 | ✅ 完成 |
| order_items | 67 | 67 | ✅ 完成 |
| order_items_recovery | 8 | 8 | ✅ 完成 |
| order_items_send | 0 | 0 | ✅ 完成 |
| profit_money | 26,061 | 1,150 | 部分迁移 |
| profit_integral | 33,487 | 0 | 未迁移 |
| profit_money2 | 19,491 | 0 | 未迁移 |
| profit_pay | 3,310 | 0 | 未迁移 |
| profit_score | 0 | 0 | ✅ 完成 |
| profit_ou_qi | 8,355 | 0 | 未迁移 |
| coupons | 19 | 0 | 未迁移 |
| coupon_receives | 7,799 | 7,799 | ✅ 完成 |
| user_coupons | 0 | 0 | ✅ 完成 |
| diamond_products | 5 | 0 | 未迁移 |
| diamond_orders | 398 | 0 | 未迁移 |
| tasks | 9 | 0 | 未迁移 |
| user_tasks | 4,899 | 0 | 未迁移 |
| sign_configs | 35 | 0 | 未迁移 |
| user_signs | 702 | 0 | 未迁移 |
| vip_levels | 75 | 0 | 未迁移 |
| vip_level_rewards | 225 | 0 | 未迁移 |
| user_vip_rewards | 1,393 | 0 | 未迁移 |
| configs | 25 | 0 | 未迁移 |
| deliveries | 11 | 0 | 未迁移 |
| pictures | 1,175 | 0 | 未迁移 |
| adverts | 16 | 0 | 未迁移 |
| admins | 3 | 0 | 未迁移 |
## Tasks
- [x] 1. SQL Server 环境搭建和数据库创建
- honey_box 数据库已创建
- 需要配置数据库参数(恢复模式、统计信息、排序规则)
- 需要创建应用程序用户和权限
- _Requirements: 阶段2环境搭建_
- [x] 2. 用户系统表结构创建
- [x] 2.1 创建 users 表
- 包含所有用户字段24个字段使用 snake_case 命名
- 创建主键、唯一约束open_id, uid、索引
- 源表: user (2,201条记录)
- _Requirements: 1.1_
- [x] 2.2 创建 user_accounts 表
- 存储用户账户令牌信息12个字段
- 创建索引user_id, account_token
- 源表: user_account (3,452条记录)
- _Requirements: 1.2_
- [x] 2.3 创建 user_login_logs 表
- 记录用户登录日志7个字段
- 创建索引user_id, login_time, platform
- 源表: user_login_log (11,407条记录)
- _Requirements: 1.3_
- [x] 2.4 创建 user_addresses 表
- 存储用户收货地址
- 源表: user_address (51条记录)
- _Requirements: 1.4_
- [x] 2.5 编写用户表结构验证脚本
- **Property 1: 表结构完整性**
- **Validates: Requirements 1.1, 1.2, 1.3, 1.4**
- [x] 3. 商品系统表结构创建
- [x] 3.1 创建 goods 表
- 包含完整 54 个字段
- 包含福利屋、限购、特殊功能字段
- 源表: goods (503条记录)
- _Requirements: 2.1_
- [x] 3.2 创建 goods_items 表
- 存储商品奖品列表
- 源表: goods_list (1,844条记录)
- _Requirements: 2.2_
- [x] 3.3 创建 goods_types 表
- 存储商品类型配置
- 源表: goods_type (13条记录)
- _Requirements: 2.3_
- [x] 3.4 创建 goods_extensions 表
- 存储商品扩展配置
- 源表: goods_extend (34条记录)
- _Requirements: 2.4_
- [x] 3.5 创建 prize_levels 表
- 存储奖品等级配置
- 源表: shang (106条记录)
- _Requirements: 2.5_
- [x] 3.6 编写商品表结构验证脚本
- **Property 1: 表结构完整性**
- **Validates: Requirements 2.1, 2.2, 2.3, 2.4, 2.5**
- [x] 4. 订单系统表结构创建
- [x] 4.1 创建 orders 表
- 包含完整 33 个字段
- 包含支付方式组合字段
- 源表: order (15条记录)
- _Requirements: 3.1_
- [x] 4.2 创建 order_items 表
- 存储订单详情/抽奖结果
- 源表: order_list (67条记录)
- _Requirements: 3.2_
- [x] 4.3 创建 order_items_recovery 表
- 存储回收的奖品记录
- 源表: order_list_recovery (8条记录)
- _Requirements: 3.3_
- [x] 4.4 创建 order_items_send 表
- 存储发货记录
- 源表: order_list_send (0条记录)
- _Requirements: 3.4_
- [x] 4.5 编写订单表结构验证脚本
- **Property 1: 表结构完整性**
- **Validates: Requirements 3.1, 3.2, 3.3, 3.4**
- [x] 5. 财务系统表结构创建
- [x] 5.1 创建 profit_money 表
- 记录余额变动明细
- 源表: profit_money (26,061条记录)
- _Requirements: 4.1_
- [x] 5.2 创建 profit_integral 表
- 记录积分变动明细
- 源表: profit_integral (33,487条记录)
- _Requirements: 4.2_
- [x] 5.3 创建 profit_money2 表
- 记录积分2变动明细
- 源表: profit_money2 (19,491条记录)
- _Requirements: 4.3_
- [x] 5.4 创建 profit_pay 表
- 记录支付流水
- 源表: profit_pay (3,310条记录)
- _Requirements: 4.4_
- [x] 5.5 创建 profit_score 和 profit_ou_qi 表
- 记录评分和欧气值变动
- 源表: profit_score (0条), profit_ou_qi (8,355条)
- _Requirements: 4.5, 4.6_
- [x] 6. 优惠券和钻石系统表结构创建
- [x] 6.1 创建 coupons 表
- 存储优惠券模板
- 源表: coupon (19条记录)
- _Requirements: 5.1_
- [x] 6.2 创建 coupon_receives 表
- 存储用户领取的优惠券
- 源表: coupon_receive (7,846条记录)
- _Requirements: 5.2_
- [x] 6.3 创建 user_coupons 表
- 存储欧气券
- 源表: user_coupon (0条记录)
- _Requirements: 5.3_
- [x] 6.4 创建 diamond_products 表
- 存储钻石商品配置
- 源表: diamond_products (5条记录)
- _Requirements: 6.1_
- [x] 6.5 创建 diamond_orders 表
- 存储钻石订单记录
- 源表: diamond_orders (398条记录)
- _Requirements: 6.2_
- [x] 7. 任务、签到和VIP系统表结构创建
- [x] 7.1 创建 tasks 和 user_tasks 表
- 存储任务配置和用户任务记录
- 源表: task_list (9条), user_task_list (4,899条)
- _Requirements: 7.1, 7.2_
- [x] 7.2 创建 sign_configs 和 user_signs 表
- 存储签到配置和用户签到记录
- 源表: sign_config (35条), user_sign (702条)
- _Requirements: 7.3, 7.4_
- [x] 7.3 创建 vip_levels 和 vip_level_rewards 表
- 存储VIP等级配置和奖品
- 源表: quan_yi_level (75条), quan_yi_level_jiang (225条)
- _Requirements: 8.1, 8.2_
- [x] 7.4 创建 user_vip_rewards 表
- 存储用户领取的VIP奖品
- 源表: user_quan_yi_level_jiang (1,393条)
- _Requirements: 8.3_
- [x] 8. 系统配置和管理后台表结构创建
- [x] 8.1 创建 configs 表
- 存储系统配置
- 源表: config (25条记录)
- _Requirements: 9.1_
- [x] 8.2 创建 deliveries 和 pictures 表
- 存储快递公司和图片管理
- 源表: delivery (11条), picture (1,175条)
- _Requirements: 9.2, 9.3_
- [x] 8.3 创建 adverts 表
- 存储广告配置
- 源表: advert (16条记录)
- _Requirements: 9.4_
- [x] 8.4 创建 admins 和管理日志表
- 存储管理员信息和日志(仅结构)
- 源表: admin (3条), admin_login_log (398条), admin_operation_log (94,986条)
- _Requirements: 10.1, 10.2, 10.3_
- [x] 9. Checkpoint - 表结构创建验证
- 验证所有表是否正确创建
- 验证索引和约束是否正确
- 确保所有测试通过,如有问题请询问用户
- [-] 10. 用户数据迁移
- [x] 10.1 完成 users 数据迁移
- 当前状态: 2,202/2,202 条记录已迁移 ✅
- 编写 Node.js 脚本 `server/C#/scripts/migrate_users.js`
- 使用 mysql2 连接 MySQL查询 user 表数据
- 使用 mssql 连接 SQL Server插入到 users 表
- 处理时间戳转换Unix时间戳 → DATETIME2
- 支持增量迁移(跳过已存在的记录)
- 数据库配置参考: .kiro\settings\mcp.json
- _Requirements: 1.5, 1.6_
- [x] 10.2 完成 user_accounts 数据迁移
- 当前状态: 590/3,452 条记录已迁移
- 编写 Node.js 脚本 `server/C#/scripts/migrate_user_accounts.js`
- 从 MySQL user_account 查询数据
- 转换并插入到 SQL Server user_accounts 表
- 支持增量迁移
- _Requirements: 1.5_
- [x] 10.3 迁移 user_login_logs 数据
- 当前状态: 0/11,407 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_user_login_logs.js`
- 从 MySQL user_login_log 查询数据
- 转换并插入到 SQL Server user_login_logs 表
- 处理时间戳转换
- _Requirements: 1.5_
- [x] 10.4 迁移 user_addresses 数据
- 当前状态: 0/51 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_user_addresses.js`
- 从 MySQL user_address 查询数据
- 转换并插入到 SQL Server user_addresses 表
- _Requirements: 1.5_
- [ ] 10.5 编写用户数据验证脚本
- 编写 Node.js 脚本 `server/C#/scripts/validate_user_migration.js`
- 对比 MySQL 和 SQL Server 的记录数
- 验证时间戳转换正确性(随机抽样验证)
- **Property 2: 数据记录数一致性**
- **Property 3: 时间戳转换正确性**
- **Validates: Requirements 1.5, 1.6, 11.1**
- [ ] 11. 商品数据迁移
- [x] 11.1 迁移 goods 数据
- 当前状态: 0/503 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_goods.js`
- 从 MySQL goods 查询数据,转换并插入到 SQL Server goods 表
- 保留福利屋和限购配置
- _Requirements: 2.6, 2.7_
- [x] 11.2 迁移 goods_items 数据
- 当前状态: 0/1,844 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_goods_items.js`
- 从 MySQL goods_list 迁移到 SQL Server goods_items
- _Requirements: 2.6_
- [x] 11.3 迁移 goods_types 数据
- 当前状态: 0/13 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_goods_types.js`
- 从 MySQL goods_type 迁移到 SQL Server goods_types
- _Requirements: 2.6_
- [x] 11.4 迁移 goods_extensions 数据
- 当前状态: 0/34 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_goods_extensions.js`
- 从 MySQL goods_extend 迁移到 SQL Server goods_extensions
- _Requirements: 2.6_
- [x] 11.5 迁移 prize_levels 数据
- 当前状态: 0/106 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_prize_levels.js`
- 从 MySQL shang 迁移到 SQL Server prize_levels
- _Requirements: 2.6_
- [ ] 11.6 编写商品数据验证脚本
- 编写 Node.js 脚本 `server/C#/scripts/validate_goods_migration.js`
- **Property 2: 数据记录数一致性**
- **Property 5: 业务配置完整性**
- **Validates: Requirements 2.6, 2.7, 11.1**
- [x] 12. 订单数据迁移
- [x] 12.1 迁移 orders 数据
- 当前状态: 15/15 条记录 ✅ 完成
- _Requirements: 3.5_
- [x] 12.2 迁移 order_items 数据
- 当前状态: 67/67 条记录 ✅ 完成
- _Requirements: 3.5_
- [x] 12.3 迁移 order_items_recovery 和 order_items_send 数据
- 当前状态: recovery 8/8条 ✅, send 0/0条 ✅ 完成
- _Requirements: 3.5_
- [x] 12.4 编写订单数据验证脚本
- **Property 2: 数据记录数一致性**
- **Property 4: 财务数据一致性**
- **Validates: Requirements 3.5, 11.1, 11.3**
- [-] 13. 财务数据迁移
- [-] 13.1 完成 profit_money 数据迁移
- 当前状态: 1,150/26,061 条记录已迁移
- 编写 Node.js 脚本 `server/C#/scripts/migrate_profit_money.js`
- 从 MySQL profit_money 查询数据,转换并插入到 SQL Server
- 支持增量迁移(跳过已存在的记录)
- _Requirements: 4.7_
- [ ] 13.2 迁移 profit_integral 数据
- 当前状态: 0/33,487 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_profit_integral.js`
- 从 MySQL profit_integral 迁移到 SQL Server profit_integral
- _Requirements: 4.7_
- [ ] 13.3 迁移 profit_money2 数据
- 当前状态: 0/19,491 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_profit_money2.js`
- 从 MySQL profit_money2 迁移到 SQL Server profit_money2
- _Requirements: 4.7_
- [ ] 13.4 迁移 profit_pay 数据
- 当前状态: 0/3,310 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_profit_pay.js`
- 从 MySQL profit_pay 迁移到 SQL Server profit_pay
- _Requirements: 4.7_
- [ ] 13.5 迁移 profit_ou_qi 数据
- 当前状态: 0/8,355 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_profit_ou_qi.js`
- 从 MySQL profit_ou_qi 迁移到 SQL Server profit_ou_qi
- profit_score 源表为空,无需迁移数据
- _Requirements: 4.7_
- [ ] 13.6 编写财务数据验证脚本
- 编写 Node.js 脚本 `server/C#/scripts/validate_financial_migration.js`
- 验证余额、积分总和一致性
- **Property 4: 财务数据一致性**
- **Validates: Requirements 4.7, 11.2**
- [ ] 14. 优惠券和钻石数据迁移
- [x] 14.1 迁移 coupons 数据
- 当前状态: 0/19 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_coupons.js`
- 从 MySQL coupon 迁移到 SQL Server coupons
- _Requirements: 5.4_
- [x] 14.2 迁移 coupon_receives 数据
- 当前状态: 7,799/7,799 条记录 ✅ 完成
- 编写 Node.js 脚本 `server/C#/scripts/migrate_coupon_receives.js`
- 从 MySQL coupon_receive 迁移到 SQL Server coupon_receives
- 保留有效期信息
- _Requirements: 5.4_
- [ ] 14.3 迁移 user_coupons 数据
- 当前状态: 0/0 条记录 (源表为空)
- 无需迁移数据,仅验证表结构
- _Requirements: 5.4_
- [x] 14.4 迁移 diamond_products 数据
- 当前状态: 0/5 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_diamond_products.js`
- 从 MySQL diamond_products 迁移到 SQL Server diamond_products
- _Requirements: 6.3_
- [x] 14.5 迁移 diamond_orders 数据
- 当前状态: 0/398 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_diamond_orders.js`
- 从 MySQL diamond_orders 迁移到 SQL Server diamond_orders
- 保留奖励日志
- _Requirements: 6.3_
- [ ] 14.6 编写优惠券和钻石数据验证脚本
- 编写 Node.js 脚本 `server/C#/scripts/validate_coupon_diamond_migration.js`
- **Property 7: 数据迁移往返一致性**
- **Validates: Requirements 5.4, 6.3**
- [ ] 15. 任务签到和VIP数据迁移
- [x] 15.1 迁移 tasks 数据
- 当前状态: 0/9 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_tasks.js`
- 从 MySQL task_list 迁移到 SQL Server tasks
- _Requirements: 7.1_
- [ ] 15.2 迁移 user_tasks 数据
- 当前状态: 0/4,899 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_user_tasks.js`
- 从 MySQL user_task_list 迁移到 SQL Server user_tasks
- _Requirements: 7.2_
- [x] 15.3 迁移 sign_configs 数据
- 当前状态: 0/35 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_sign_configs.js`
- 从 MySQL sign_config 迁移到 SQL Server sign_configs
- _Requirements: 7.3_
- [ ] 15.4 迁移 user_signs 数据
- 当前状态: 0/702 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_user_signs.js`
- 从 MySQL user_sign 迁移到 SQL Server user_signs
- _Requirements: 7.4_
- [x] 15.5 迁移 vip_levels 数据
- 当前状态: 0/75 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_vip_levels.js`
- 从 MySQL quan_yi_level 迁移到 SQL Server vip_levels
- _Requirements: 8.1_
- [x] 15.6 迁移 vip_level_rewards 数据
- 当前状态: 0/225 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_vip_level_rewards.js`
- 从 MySQL quan_yi_level_jiang 迁移到 SQL Server vip_level_rewards
- _Requirements: 8.2_
- [ ] 15.7 迁移 user_vip_rewards 数据
- 当前状态: 0/1,393 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_user_vip_rewards.js`
- 从 MySQL user_quan_yi_level_jiang 迁移到 SQL Server user_vip_rewards
- _Requirements: 8.3_
- [ ] 15.8 编写任务签到VIP数据验证脚本
- 编写 Node.js 脚本 `server/C#/scripts/validate_task_sign_vip_migration.js`
- **Property 2: 数据记录数一致性**
- **Validates: Requirements 7.1-7.4, 8.1-8.3**
- [ ] 16. 系统配置和管理数据迁移
- [x] 16.1 迁移 configs 数据
- 当前状态: 0/25 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_configs.js`
- 从 MySQL config 迁移到 SQL Server configs
- _Requirements: 9.1_
- [x] 16.2 迁移 deliveries 数据
- 当前状态: 0/11 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_deliveries.js`
- 从 MySQL delivery 迁移到 SQL Server deliveries
- _Requirements: 9.2_
- [x] 16.3 迁移 pictures 数据
- 当前状态: 0/1,175 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_pictures.js`
- 从 MySQL picture 迁移到 SQL Server pictures
- _Requirements: 9.3_
- [x] 16.4 迁移 adverts 数据
- 当前状态: 0/16 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_adverts.js`
- 从 MySQL advert 迁移到 SQL Server adverts
- _Requirements: 9.4_
- [x] 16.5 迁移 admins 数据
- 当前状态: 0/3 条记录
- 编写 Node.js 脚本 `server/C#/scripts/migrate_admins.js`
- 从 MySQL admin 迁移到 SQL Server admins
- 管理日志表仅保留结构,不迁移数据
- _Requirements: 10.1_
- [ ] 16.6 编写系统配置数据验证脚本
- 编写 Node.js 脚本 `server/C#/scripts/validate_system_migration.js`
- **Property 2: 数据记录数一致性**
- **Validates: Requirements 9.1-9.4, 10.1**
- [ ] 17. Checkpoint - 数据迁移验证
- 验证所有表的记录数是否一致
- 验证财务数据总和是否一致
- 确保所有测试通过,如有问题请询问用户
- [ ] 18. 索引和约束优化
- [ ] 18.1 验证所有表的主键约束
- 验证主键是否正确创建
- _Requirements: 12.1_
- [ ] 18.2 验证常用查询字段索引
- 根据业务查询模式验证索引
- _Requirements: 12.2_
- [ ] 18.3 验证表和字段注释
- 确保所有表和字段都有注释
- _Requirements: 12.5_
- [ ] 18.4 验证唯一约束
- 为唯一字段验证约束
- _Requirements: 12.4_
- [ ] 18.5 编写索引和约束验证脚本
- **Property 6: 索引和约束完整性**
- **Validates: Requirements 12.1, 12.2, 12.4, 12.5**
- [ ] 19. 生成数据验证报告
- [ ] 19.1 编写综合验证报告生成脚本
- 列出每个表的迁移前后记录数对比
- 列出财务数据一致性验证结果
- 列出索引和约束创建状态
- _Requirements: 11.4_
- [ ] 19.2 执行完整数据验证
- **Property 2: 数据记录数一致性**
- **Property 4: 财务数据一致性**
- **Property 6: 索引和约束完整性**
- **Validates: Requirements 11.1, 11.2, 11.3, 11.4**
- [ ] 20. Final Checkpoint - 迁移完成验证
- 确保所有验证脚本通过
- 生成最终迁移报告
- 确保所有测试通过,如有问题请询问用户
## 数据统计摘要基于最新MySQL数据
| 表类别 | 表数量 | MySQL总记录数 | SQL Server已迁移 | 待迁移 |
|--------|--------|--------------|-----------------|--------|
| 用户系统 | 4 | 17,339 | 17,339 | 0 ✅ |
| 商品系统 | 5 | 2,500 | 2,458 | 42 |
| 订单系统 | 4 | 90 | 90 | 0 ✅ |
| 财务系统 | 6 | 90,704 | 1,150 | 89,554 |
| 优惠券系统 | 3 | 7,865 | 0 | 7,865 |
| 钻石系统 | 2 | 403 | 0 | 403 |
| 任务签到 | 4 | 5,645 | 0 | 5,645 |
| VIP系统 | 3 | 1,693 | 0 | 1,693 |
| 系统配置 | 4 | 1,227 | 0 | 1,227 |
| 管理后台 | 3 | 3 (仅admins) | 0 | 3 |
| **合计** | **38** | **127,241** | **4,764** | **122,477** |
## Notes
- 所有任务(包括测试任务)都必须完成,确保迁移质量
- 每个任务都引用了具体的需求编号,确保可追溯性
- Checkpoint 任务用于阶段性验证,确保迁移质量
- 属性测试验证迁移后数据的正确性和完整性
- 建议在测试环境完成所有验证后再进行生产环境迁移
- 根据 Requirements 12.3,所有表不创建外键约束
- 根据 Requirements 12.5,所有表和字段都需要添加注释
### Node.js 迁移脚本规范
- **脚本位置**: `server/C#/scripts/migrate_*.js`
- **数据库配置**: 参考 `~/.kiro/settings/mcp.json`
- **依赖包**:
- `mysql2`: 连接 MySQL 数据库
- `mssql`: 连接 SQL Server 数据库
- **脚本功能**:
1. 连接 MySQL 源数据库,查询数据
2. 数据转换(时间戳、字段名映射等)
3. 连接 SQL Server 目标数据库,批量插入数据
4. 支持增量迁移(跳过已存在的记录)
5. 输出迁移进度和结果统计
- **运行方式**: `node server/C#/scripts/migrate_xxx.js`