用 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.exe或jailerGUI.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 行可以收集到独立的嵌入式数据库,支持从只读库导出
联系方式
- 主页:https://github.com/Wisser/Jailer 或 http://jailer.sourceforge.net/
- 论坛:https://sourceforge.net/p/jailer/discussion/