Agent Skills
返回列表
💻

数据库填充

开发编程 更新于 2026.08.29

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

请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/db-seed。

技能介绍

别再拿 test123 和 foo@bar.com 糊弄演示库

给开发环境造样例数据,往往要从某个三年前的脚本里复制粘贴,再手动改成能用的邮箱和日期。结果就是演示库里的用户叫 user1,评论内容全是 Lorem ipsum,外键关系靠手填 ID 硬凑。一旦 schema 变了——加了 NOT NULL 字段、加了唯一索引、拆了外键——这份脚本立刻失效。

Database Seed Generator 要解决的就是这一步:给它 schema,它产出可以直接跑的种子文件。

从 schema 到可运行脚本

第一步是建模。 技能会扫描项目中的 Drizzle schema、drizzle/*.sql、schema.sql 或 prisma/schema.prisma,读全后建立表、列、类型约束、外键依赖和 JSON 字段的模型(在 D1/SQLite 里 JSON 存的是 TEXT)。

第二步是确认参数。 用途分 dev、demo、testing:开发库要包含边界值(空字段、超长串、Unicode),演示库要精致好看,测试库要覆盖重复、特殊字符与边界组合。量级分小(5–10 行)、中(20–50)、大(100+)。领域上下文如电商、SaaS、博客,缺省时推断。

第三步是规划插入顺序。 从外键建依赖图,先父表后子表——users → categories → posts → comments → tags → post_tags。循环依赖用可空外键两遍法:先插 NULL,再 UPDATE 回来。

第四步是生成真实数据。 姓名用硬编码常见名列表(混合性别与文化),邮箱由姓名派生并固定使用 example.com 保留域,日期统一 ISO 8601,价格落在真实区间,内容写 3–5 种变体而非一句占位符。可选 seededRandom(42) 保证重跑结果一致。

输出格式与幂等

TypeScript 版输出 scripts/seed.ts,导出 seed(db),先按逆序删除再插入;原始 SQL 版输出 seed.sql,日期用 ISO 8601 文本。两者都遵守 D1 限制——每条 INSERT 不超过 10 行。Workers 场景可临时加 /api/seed 端点,上线前移除。

幂等策略按用途区分:dev/testing 默认删后插,demo 默认 .onConflictDoUpdate 保留用户自填数据。

适用边界

生成的是数据文件,真实运行由你决定。生产库不要 seed,除非明确用于演示。技能不负责迁移或部署,下游产物可交给 d1-migration 或演示库使用。

使用场景

  • 前端联调时数据库只有空表,需要含空字段、超长串、Unicode的dev库数据
  • 路演前需要demo库,要求用户、商品、订单数据贴合业务且精致
  • CI跑集成测试前,需要可重跑的测试库种子覆盖边界组合
  • 现有SQLite迁移需补充可重跑、按外键逆序删除再插入的种子SQL

适合人员

  • 后端工程师:补全Drizzle/D1 dev库种子并保证外键正确
  • 独立开发者:快速得到可跑的demo库样例数据
  • 测试工程师:用幂等种子脚本造边界测试数据
  • 数据平台工程师:把种子产物交给d1-migration导入