SuperAPI AI 工具集

database-migration

数据与分析

查看项目

更新于 10-15 09:20

技能介绍

用途

该技能用于处理数据库结构与数据迁移相关任务,适用场景包括:在不同 ORM 之间迁移、执行结构变换、在数据库间移动数据、实现回滚流程、零停机部署、数据库版本升级以及数据模型重构。若任务与数据库迁移无关,或需要此范围之外的领域与工具,则不应使用该技能。

主要能力

ORM 迁移

覆盖 Sequelize、TypeORM、Prisma 三类 ORM 的迁移写法。Sequelize 迁移文件包含 up/down 方法,创建表后通过 npx sequelize-cli db:migrate 执行、npx sequelize-cli db:migrate:undo 回滚。TypeORM 迁移以类实现 MigrationInterface,通过 npm run typeorm migration:run 执行、npm run typeorm migration:revert 回滚。Prisma 通过 schema 定义模型,使用 npx prisma migrate dev --name create_users 生成迁移、npx prisma migrate deploy 应用。

结构变换

包括带默认值添加列、零停机重命名列(先加新列并复制数据、再改应用读取、最后删除旧列)、变更列类型(对大表采用新增列、复制转换数据、删除旧列、重命名新列的多步方式)。

数据转换

演示复杂数据迁移:查询原始记录、逐条解析并写回新字段、最后删除旧列;回滚方法中重建原字段并将拆分字段重新拼接。

回滚策略

提供基于事务的迁移(在事务中执行,异常时回滚并抛出)与基于检查点的回滚(先建备份表,迁移失败时从备份恢复)。

零停机迁移

以蓝绿部署为例,分阶段执行:先做向后兼容的变更、部署同时写新旧列的代码、回填数据、部署读取新列的代码、最后删除旧列。

跨数据库迁移

以 PostgreSQL 与 MySQL 为例,通过 queryInterface.sequelize.getDialect() 判断方言,针对 JSON/JSONB 等差异分别处理。

最佳实践与常见陷阱

最佳实践包括:每次 up() 都要有 down()、先在预发环境测试、尽量使用事务、迁移前备份、拆成小步增量、部署时监控、记录原因与方式、保证迁移可重复执行。常见陷阱包括:未测试回滚流程、无停机策略的破坏性变更、忽略 NULL 值、不考虑索引性能、忽略外键约束、一次性迁移过多数据。

使用方式与限制

先明确目标、约束与所需输入,再应用相关最佳实践并验证结果,提供可执行的步骤与验证方法。该技能仅适用于上述明确匹配的范围,输出不能替代针对具体环境的验证、测试或专家评审;若缺少必需输入、权限、安全边界或成功标准,应停止并请求澄清。

关于支持材料的说明

目录中列出的以下路径属于外部先决条件,不随本技能打包,也未标识已验证的下载来源:references/orm-switching.md、references/schema-migration.md、references/data-transformation.md、references/rollback-strategies.md、assets/schema-migration-template.sql、assets/data-migration-script.py、scripts/test-migration.sh。使用依赖这些路径的步骤前,需先请求原始支持材料或确认已有安装,相对于该安装解析路径、检查内容并核实许可与执行前提;在所需文件存在之前不要运行命令或声称已遵循相关流程,也不要用同名无关文件替代或编造缺失脚本。此处已完整记录的独立步骤可在用户授权范围内执行,任何依赖缺失文件的部分应报告为不可用。