Pre-populated sample databases as Docker images — ready-to-run PostgreSQL, MySQL, CockroachDB, SQLite, and DuckDB containers loaded with real, valid sample data (Chinook, Northwind, Sakila/Pagila, World, AdventureWorks, Stack Exchange, and more). Ever needed a database already populated with valid data — to practice SQL, run tests, demo an app, or benchmark — without hand-crafting rows or hunting for a usable dump? Every image ships exactly one dataset in its own database, so you just docker run and connect.
Each cell is the image tag to pull for that dataset on that engine; — means it isn't shipped there (yet). The dataset name links to its upstream source when every engine pulls from the same one; where engines use different upstreams, the source link is on the individual tag instead. All images are published for linux/amd64 and linux/arm64.
| Dataset | PostgreSQL | MySQL | CockroachDB | SQLite | DuckDB |
|---|---|---|---|---|---|
| AdventureWorks | adventureworks |
— | — | — | — |
| Airlines | airlines |
— | — | airlines |
— |
| Chinook | yugabyte-chinook |
chinook |
chinook |
chinook |
chinook |
| Dell DVD Store | dellstore |
dellstore |
dellstore |
dellstore |
dellstore |
| Employees | — | employees |
— | — | — |
| French Towns | frenchtowns |
frenchtowns |
frenchtowns |
frenchtowns |
frenchtowns |
| GeoNames | geonames |
geonames |
geonames |
geonames |
— |
| ISO 3166 | iso3166 |
iso3166 |
iso3166 |
iso3166 |
iso3166 |
| MoMA | moma |
moma |
moma |
moma |
moma |
| Northwind | yugabyte-northwind |
northwind |
northwind |
northwind |
— |
| NYC Taxi Trip Records | — | — | — | — | nyc-taxi |
| OMDb | omdb |
— | — | — | — |
| OpenFlights | openflights |
openflights |
openflights |
openflights |
— |
| PGExercises | yugabyte-pgexercises |
pgexercises |
pgexercises |
pgexercises |
pgexercises |
| Sakila / Pagila | pagila |
sakila |
— | sakila |
— |
| SportsDB | sportsdb, yugabyte-sportsdb |
sportsdb |
sportsdb |
sportsdb |
— |
| Stack Exchange¹ | stackexchange-<site> |
stackexchange-<site> |
stackexchange-<site> |
stackexchange-<site> |
stackexchange-<site> |
| USDA | usda |
usda |
usda |
usda |
usda |
| World | world |
world |
world |
world |
world |
¹ <site> is one of beer, coffee, poker, woodworking, chess, cooking, outdoors, boardgames (e.g. stackexchange-chess).
Every engine also publishes a latest tag: it tracks world on PostgreSQL and MySQL, and chinook on CockroachDB, SQLite, and DuckDB.
ClickHouse, Apache Druid, and Apache Pinot are planned — see Future Work.
docker run -d --name pg-ds-world aa8y/postgres-dataset:world
docker exec -it pg-ds-world psql -d world
Each engine's README has the equivalent client invocation and per-dataset notes: PostgreSQL, MySQL, CockroachDB, SQLite, DuckDB.
The database inside each image is the bare dataset name — the tag minus any yugabyte-/stackexchange- prefix (e.g. yugabyte-chinook → chinook, stackexchange-beer → beer). Source prefixes exist so a dataset could ship from a second mirror later; sportsdb and yugabyte-sportsdb are the same image today, with the unprefixed sportsdb kept as a backwards-compatible alias.
- Engine guides: PostgreSQL · MySQL · CockroachDB · SQLite · DuckDB
- Building images —
dave, custom images, and build caching - Testing — structure tests and integration smoke tests
- Dataset attribution and licenses
Docker Hub repositories: aa8y/postgres-dataset · aa8y/mysql-dataset · aa8y/cockroach-dataset · aa8y/sqlite-dataset · aa8y/duckdb-dataset
This repository's own software and packaging are MIT licensed. Each bundled dataset keeps its upstream license — see docs/ATTRIBUTION.md for the per-dataset sources, licenses, and required attributions (notably the Stack Exchange dumps, which are CC BY-SA 4.0).
- More MySQL datasets: port additional PostgreSQL datasets where a MySQL-native source exists or the upstream is format-neutral enough to hand-translate faithfully (see Datasets not ported to MySQL).
- ClickHouse images: an OLAP columnar engine whose SQL dialect and bulk-load model (
MergeTree,INSERT/CSV) differ from PostgreSQL enough that most datasets would need engine-specific transforms rather than reusing the postgres dumps verbatim. - More DuckDB datasets: the engine now carries
chinook, the pgFoundry family,moma,nyc-taxi, and the Stack Exchange sites; the remaining gaps (northwind,sakila,sportsdb) need either a DuckDB-readable upstream or a per-dataset transform (see duckdb/README.md). - Apache Druid images: a real-time OLAP datastore built around immutable segments and batch/stream ingestion rather than conventional DDL +
INSERT/COPY, so each dataset would need a dedicated ingest pipeline and schema mapping. - Apache Pinot images: a distributed OLAP engine oriented toward star-schema analytics tables and offline/online ingestion jobs, so the relational sample dumps would need similar per-dataset transforms and load paths.
- More Parquet-native datasets:
nyc-taxishowed the shape (fetch a Parquet file,CREATE TABLE ... AS FROM read_parquet(...)), and the open-data world publishes plenty more. - Find and add more free data sources.