Agent Skills
返回列表
💻

数据库种子数据生成

开发编程 更新于 2026.08.30

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

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

技能介绍

问题在哪

本地联调、集成测试和预发布演练往往需要一个「看起来像真数据」的库,但手写 INSERT 很快会在外键顺序、唯一约束和重复执行上踩坑:跑两次就 duplicate key,子表先于父表插入直接失败,CI 里又因为随机数据不可复现导致用例飘红。生产库更不能拿来随便灌测试行。

技能怎么帮你落地

该技能把 数据库种子填充 当成一条可审查的工作流,而不是一堆零散的 SQL 片段:

  • 模式分析:从迁移或 DDL 梳理表、列类型、NOT NULL / UNIQUE / 外键,并排出父表先于子表的插入顺序。
  • 策略选择:开发用固定随机种子的确定性数据;演示用 Faker 类库;需要分布真实性时用脱敏快照思路——并约定每张表的行数。
  • 脚本生成:按项目栈(Python / JS / SQL / Ruby 等)写出满足约束的种子,插入包在事务里;唯一字段用序列或 ON CONFLICT 类模式处理。
  • 幂等与分环境:支持重复执行(如 INSERT ON CONFLICT DO NOTHING、UPSERT、或 truncate 后插入);用环境变量切换「本地小集 / 集成中等 / 压测大集」配置。
  • 执行校验:核对行数,检查外键是否都指向已存在行,并记录各表填充结果。

你只需提供模式(或迁移路径)、目标环境和数据规模,也可指定数据特征(如多时区用户、近 12 个月订单)。

边界与注意

  • Faker 不保证大规模下的全局唯一,需 fake.unique 或计数器后缀;循环外键要分两阶段插入再更新。
  • 万级以上行数应走批量加载(如 PostgreSQL COPY),而非逐条 INSERT。
  • 脚本应带环境守卫,禁止对生产库执行种子;显式 ID 填充后记得重置自增序列。

使用场景

  • 新服务本地 PostgreSQL 空库,需按迁移生成用户、商品、订单且外键顺序正确的可重复种子脚本
  • 集成测试要在每张表写入千级行数,并要求固定随机种子以便 CI 结果可复现
  • 预发布环境需要中等规模数据,并验证种子跑两遍不会产生重复主键或违反唯一约束
  • 压测前要把单表扩到十万行以上,希望脚本建议用 COPY 等批量插入而非逐条 INSERT

适合人员

  • 负责新模块联调的后端工程师,需要空库快速具备可查询的关联业务数据
  • 维护 CI 流水线的测试工程师,希望种子数据规模与环境配置可由变量切换且结果稳定
  • 在上线前审查数据脚本的 DBA,关注事务、外键完整性与生产环境误执行防护
  • 使用 Prisma、Knex 或 Rails db:seed 的全栈开发者,需要与现有栈匹配的种子文件草案