综合 用 Jailer 从生产库抽一份引用完整的测试子集

2026-09-16 21:31:33

用 Jailer 从生产库抽一份引用完整的测试子集

Jailer 是一个数据库子集抽取(subsetting)与关系数据浏览工具,由 Wisser 维护。

  • 项目地址:https://github.com/Wisser/Jailer
  • 官网/文档:http://jailer.sourceforge.net/
  • Java API 文档:https://wisser.github.io/Jailer/api.html
  • 引擎 Maven 坐标:https://mvnrepository.com/artifact/io.github.wisser/jailer-engine

仓库当前约 3.2K star,语言为 Java,最近更新 2026-09。

为什么不直接 dump 生产库

生产库动辄几百 GB,全量 dump 再导进测试环境,体积和导入时间都不划算;更麻烦的是真实用户数据直接落到开发机上,合规上通常过不去。Jailer 的做法是只从生产库抽出一个小的行集合:数据量降下来,但引用完整性(referential integrity)保留——不会出现订单表抽到了、对应的客户行却不在的情况。抽出来的子集可以直接导入开发或测试环境。

前提是表之间存在可跟随的关系:外键,或者手工定义的关联。没有任何关系定义时,subsetter 的效果会打折。

Subsetter 的能力

  • 从生产库导出引用完整、一致的行集合,导入开发与测试环境。
  • 删除并归档过期数据,同时不违反完整性约束,用来给生产库减负。
  • 生成的导出结果按拓扑排序,保证导入时父行先于子行。

数据浏览与 SQL 控制台

Data Browser 沿外键或用户自定义的关系双向浏览数据库。SQL Console 带代码补全、语法高亮、图表和数据库元数据可视化。发行包里自带一个 demo 数据库,可以先拿它试手。

导出格式

  • 拓扑排序的 SQL-DML
  • 层级结构的 JSON、YAML、XML
  • DbUnit 数据集

支持的数据库

基于 JDBC,原则上任何 DBMS 都能连;以下数据库有专门支持,效果最好:

PostgreSQL、Oracle、MySQL、MariaDB、Microsoft SQL Server、IBM Db2、SQLite、Sybase、Amazon Redshift、Firebird、Informix Dynamic Server、H2、Exasol。

AI 相关功能(2026 年新增)

  • AI Subsetting Assistant(2026-06-25):用自然语言描述要抽哪些数据,AI 生成 subject table、WHERE 条件和关联限制。
  • SQL Advisor(2026-05-31):用 AI 分析、解释并重构已有 SQL 查询。
  • AI Query Assistant(2026-05-15):从自然语言问题生成 SQL,走 Anthropic 或 OpenAI 兼容 API;面对大 schema 时会先做智能选表,不需要把整库表结构塞进 prompt。

安装

Windows 用 Jailer-database-tools-n.n.n.msi,Linux 用 jailer-database-tools_n.n.n-x64.deb,也可以直接下 zip 包 jailer_n.n.n.zip

启动方式:

  • Windows:运行 Jailer.exejailerGUI.bat
  • Unix/Linux/macOS:运行 jailerGUI.sh,或者 java -jar jailer.jar

从源码构建

git clone https://github.com/Wisser/Jailer.git
cd Jailer
ant

版本更新记录

  • 2026-06-25 AI Subsetting Assistant
  • 2026-05-31 SQL Advisor
  • 2026-05-15 AI Query Assistant
  • 2024-07-04 支持导出结构化 JSON 与 YAML
  • 2024-06-26 深色 UI 主题
  • 2024-04-18 集成 Liquibase,可生成 DDL 脚本,从零创建子集库
  • 2023-02-03 SQL console 可将查询结果关联到源表并动态加过滤条件
  • 2022-01-01 全新 UI(FlatLaf)
  • 2021-02-04 检测并打断父子关系环,通过延迟插入可空外键完成导出
  • 2020-02-04 引擎发布到 Maven:https://mvnrepository.com/artifact/io.github.wisser/jailer-engine
  • 2019-02-01 Model Migration Tool
  • 2018-04-26 Analyze SQL 反推关联定义
  • 2017-05-10 API 提供编程方式访问导出/导入:https://wisser.github.io/Jailer/api.html
  • 2016-12-04 可直接导出到同库的某个 schema
  • 2016-10-23 行可以收集到独立的嵌入式数据库,支持从只读库导出

联系方式

复制全文 生成海报 Jailer 数据库子集 测试数据 DbUnit

推荐文章

程序员茄子在线接单