用途:为开发、测试和预发布环境向数据库填充真实感且可复现的测试数据,适用于用户请求数据库播种或准备测试数据的场景。
主要能力:分析目标 schema,识别表、列、数据类型、约束(NOT NULL、UNIQUE、CHECK、外键)与关系,确定满足外键依赖的插入顺序;设计种子数据策略,可用固定随机种子实现可复现数据、用 faker 生成真实感数据、或用匿名化生产快照;生成符合项目语言的种子脚本;通过 INSERT ON CONFLICT DO NOTHING、UPSERT 或先清空再插入实现幂等;支持按环境划分数据量档位(本地开发 10-50 条、集成测试 1,000-10,000 条、性能测试 100K+ 条),通过环境变量或命令行参数控制;执行后校验行数与关系完整性并记录各表数量。
支持技术:Python(Faker、Factory Boy、SQLAlchemy、psycopg2)、JavaScript/TypeScript(@faker-js/faker、Prisma seed、Knex、TypeORM)、SQL(原生 INSERT、COPY FROM CSV)、Ruby(FactoryBot、Faker gem、Rails db:seed),以及 Django fixtures、Laravel seeders、Rails seeds.rb 等框架。
使用方式:提供数据库 schema 或迁移文件,指定目标环境与数据量,即可生成完整种子脚本;也可提出特定数据特征要求。
限制与注意:不得向生产库播种测试数据,建议在脚本顶部加环境检查;使用显式 ID 播种后需重置自增序列;faker 不保证大数据集唯一性,需用 fake.unique 或计数器;存在循环外键时先插入可空外键再二次更新;超过 10,000 行建议用批量插入;日期相关数据应相对当前日期生成;二进制或文件数据建议用占位路径或小体积 base64 测试图。