Database Subsetting Tool Logo Member Button: 90px wide


Jailer is a tool for database subsetting, schema and data browsing. It exports consistent, referentially intact row-sets from relational databases. It removes obsolete data without violating integrity. It is DBMS agnostic (by using JDBC), platform independent, and generates DbUnit datasets, hierarchically structured XML, and topologically sorted SQL-DML.

  • Exports consistent and referentially intact row-sets from your productive database and imports the data into your development and test environment.
  • Improves database performance by removing and archiving obsolete data without violating integrity.
  • Generates hierarchically structured XML, topologically sorted SQL-DML and DbUnit datasets.
  • Open Source. Entirely written in Java. Platform independent. DBMS agnostic.


2017-03-30 Improved filter management. Support for import-filters and literal-filters.
2017-01-27 Referential cycles can now be exported by deferring the insert of nullable foreign keys.
2016-21-10 Filter Templates allows you to define rules for assigning filters to columns.
Filters on primary key columns will automatically be propagated to the corresponding foreign key columns.
2015-12-04 Support for oracle's ROWID pseudo-column.
2016-09-08 New "Export To" mode allows to export rows directly into a different schema in the same database.
2015-12-04 Support for oracle's ROWID pseudo-column.
2015-10-23 Release 5.0 introduces the ability to collect rows in a separate embedded database. This allows it to export data from read-only databases.
2011-07-20 Implemented the "Subset by Example" feature: Use the Data Browser to collect all the rows to be extracted and let Jailer create a model for that subset.
2010-04-15 A Data Browser has been introduced. Navigate bidirectionally through the database by following foreign-key-based or user-defined relationships.
2008-12-23 Jailer now supports the DbUnit flat XML dataset file format, thus allowing the users of the famous JUnit extension DbUnit to use the extracted data for unit testing.
2007-12-05 Version 2.0 comes with new graphical user interface.
2007-06-05 Tutorial for Jailer now available.

About Jailer

Databases are growing in both size and complexity to meet the increasing demands of business. Applications to process the data are also increasing in size and complexity. With the growing complexity, solid testing becomes more and more important in order to assure the quality of software. Ideally we would like to test all changes against up-to-date production data, so the general practice is use a copy of the production database for all testing.

But when a database exceeds a certain size it becomes very expensive to provide full-size copies of the production database for development and testing. One solution of this problem is to have fewer full size copies of the production database than are really needed, often only one, which will be shared between the development and testing teams.

Of course this is far from optimal. Data in the database is left in an unknown state when passed from one team to the other. It takes a long time to provide a refresh of the production copy when it’s required. Always having an up-to-date production copy is almost impossible.

The databases required for development and testing rarely need to be full size, it is often easier to work on a small copy. Unfortunately it is very hard to manually extract a small subset of the production data. It is not possible to just take 10% of each table to get a 10% size database. The data in one table would not be related to the data in the other tables. It would not be referentially intact.

Jailer simplifies the extraction of referentially intact data. Once you have defined an extraction model, it can be used to extract data from the production database fast and easy whenever up-to-date test data is required.