Agent Skills
返回列表
💻

数据库种子数据生成

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/database-seeding-skillhub。

技能介绍

解决的实际问题

在开发与测试环境中,手动填充数据库种子数据常面临三类问题:数据重复导致测试结果不可复现、外键依赖处理不当引发约束冲突、不同环境数据量需求难以统一管理。这些问题会拖慢迭代速度,尤其在集成测试或性能压测阶段尤为明显。

核心工作步骤

  • 模式分析与依赖排序:首先解析目标数据库的表结构,识别所有列、数据类型、约束(如 NOT NULL、UNIQUE)和外键关系,确定父表先于子表的插入顺序,避免违反外键约束。
  • 数据策略选择:根据使用场景选择数据生成方式——固定种子的确定性数据用于可复现测试、Faker 生成的真实数据用于开发环境、匿名化生产快照用于预发布。同时按环境定义数据量(开发环境每表 10-50 条、集成测试 1000-10000 条、性能测试 10 万+条)。
  • 幂等脚本生成:编写匹配项目技术栈(Python/JavaScript/SQL/Ruby)的种子脚本,支持 INSERT ON CONFLICT DO NOTHING、UPSERT 或截断后插入策略确保可重复运行,并通过事务保证插入原子性。
  • 环境配置与执行验证:通过环境变量切换种子配置,执行后验证行数是否符合预期、外键关系是否完整,并记录各表填充结果。

适用边界与注意事项

  • 严禁向生产环境填充测试数据,建议在脚本中添加环境检查(如 assert os.environ["ENV"] != "production")。
  • 大数据量填充需使用批量方法(如 PostgreSQL 的 COPY、MySQL 的 LOAD DATA INFILE),避免单条 INSERT 导致性能瓶颈。
  • 处理循环外键时,可先插入无外键约束的行,再更新外键值;生成时间相关数据时需基于当前日期动态生成,避免硬编码过期日期。

使用场景

  • 本地开发环境需要少量用户、产品、订单种子数据,且脚本可重复执行不产生重复记录
  • 集成测试前批量填充中等规模数据,插入顺序必须符合外键依赖,避免约束冲突
  • 性能测试前为每表生成十万级以上订单相关数据,使用 COPY 等批量方式加载
  • 预发布环境需要接近真实分布的数据,同时对生产快照做匿名化处理后导入

适合人员

  • 后端工程师:需要在开发/集成环境快速构建与迁移一致的种子数据集
  • QA 自动化测试工程师:需要生成可重复、确定性的测试数据来断言接口结果
  • 数据库管理员/预发布负责人:需要在上线前用匿名化快照填充预发布库并保持外键完整性
  • 全栈开发者:需要用 Faker 生成符合表结构与唯一约束的真实感数据来联调前端页面