Schema migration tools for ClickHouse

### Goose[​](#goose "Direct link to Goose")

[Goose](https://github.com/pressly/goose) is another Go-based migration runner with a similar philosophy to golang-migrate. You write versioned SQL files (or Go functions for complex logic), and Goose applies them sequentially, tracking state in a version table in ClickHouse.

**Why it works well for ClickHouse:** Same fundamental strengths as golang-migrate — SQL-first, minimal configuration, easy CLI, straightforward CI/CD integration. Goose also supports writing migrations as Go functions, which gives you more flexibility for complex logic that pure SQL can't express.

**What to watch out for:** No schema diffing or autogeneration.

**Best for:** Teams already using Goose, or those who prefer its migration file conventions over golang-migrate's.

- **Type:** Imperative
- **Language:** Go (single binary)
- **License:** Open Source (MIT, free)
- **Cluster support:** No

## Other Tools in the Ecosystem[​](#other-tools-in-the-ecosystem "Direct link to Other Tools in the Ecosystem")

The following tools also work with ClickHouse. They may be a better fit depending on your stack and workflow. However we generally recommend the tools above.

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Tool License Consider for...|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | [Bytebase](https://www.bytebase.com/) Open Core For large organizations that need governance, approval workflows, and audit trails for multiple environments|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | [Flyway](https://flywaydb.org/) Open Source Teams already standardized on Flyway or JVM-based infrastructure|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | [Liquibase](https://www.liquibase.org/) Open Core Teams that use Liquibase across multiple databases and want consistency|  |  |  |  |  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | [clickhouse-migrations](https://www.npmjs.com/package/clickhouse-migrations) Open Source Node/TypeScript teams wanting a simple, ClickHouse-focused runner|  |  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | [Houseplant](https://github.com/junehq/houseplant) Open Source Python teams wanting environment-aware, ClickHouse-specific tooling|  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | | [Sqitch](https://sqitch.org/) Open Source Teams preferring native ClickHouse Client deployment scripting or needing explicit dependency management across complex deployments.|  |  |  | | --- | --- | --- | | [Alembic](https://alembic.sqlalchemy.org/) (SQLAlchemy) Open Source Python shops already using SQLAlchemy for database access | | | | | | | | | | | | | | | | | | | | | | | |

Jun 7, 2023 · 7 min read