One config file
Use one TOML file to define source, target, hooks, validation, type mapping, and cutover behavior.
Most migration tools are fine until the schema gets ugly: generated columns, unsupported indexes, collations, extension-backed types, or the first interruption halfway through a bulk copy. pgferry was built for that failure mode.
Use one TOML file to define source, target, hooks, validation, type mapping, and cutover behavior.
pgferry plan finds unsupported objects and generates hook skeletons before PostgreSQL is touched.
Checkpointed chunking means long migrations can survive network failures and operator mistakes.
PostGIS, citext, generated columns, source-specific type mapping, and bounded post-load parallelism are all first-class.
Introspection that errs on the side of honesty
Source schema analysis reports unsupported types, generated columns, skipped indexes, views, routines, and triggers that need manual handling.
COPY performance with control
Chunked range planning for eligible tables, worker pools for the hot path, and bounded index creation during post-migration cleanup.
Operational escape hatches
Hooks at four phases, schema_only and data_only modes, orphan cleanup, snapshot options, and configurable defaults preservation.
Validation instead of vibes
Optional row-count checks and explicit logging reduce the number of surprises left for cutover day.
pgferry plan migration.tomlpgferry migration.toml| Source | Driver | Workers | Snapshot mode |
|---|---|---|---|
| MySQL | go-sql-driver/mysql | Parallel | none, single_tx |
| SQLite | modernc.org/sqlite | Sequential | none |
| MSSQL | go-mssqldb | Parallel | none, single_tx |