MySQL → PostgreSQL migration
Move a MySQL schema to PostgreSQL — the structure, done for you.
DiffyPick compares a MySQL database against a PostgreSQL one and generates the PostgreSQL DDL to recreate the table and column structure. It takes the tedious first mile of the migration off your plate.
The tedious first mile
MySQL to PostgreSQL is one of the most common migrations — and the schema is the fiddly part: mapping types, reconciling identifier casing, turning AUTO_INCREMENT into sequences or identity columns.
DiffyPick does that mapping automatically and shows you exactly what it will create, before anything runs.
How it works
Connect both sides
Point DiffyPick at your MySQL source and a PostgreSQL target — a fresh, empty database is fine.
Compare
DiffyPick maps MySQL types to PostgreSQL equivalents and lists every table and column as a diff.
Review and generate
Preview the PostgreSQL DDL statement by statement, pick what to apply, then export it or run it.
What converts
Tables and columns, with types mapped to PostgreSQL: TINYINT to smallint or boolean, DATETIME to timestamp, UNSIGNED widened, AUTO_INCREMENT to identity or a sequence.
Primary keys, indexes and foreign keys come across as part of the structure.
Engine-specific objects — stored routines, triggers in MySQL dialect, and the like — are out of scope. DiffyPick moves the structure, not the logic.
What to keep in mind
- Data is not converted here. DiffyPick migrates the structure; move the rows separately, and note that cross-engine value conversion has limits.
- Engine-specific features do not carry over. MySQL-only types and objects are approximated or skipped, and flagged in the diff.
- Back up first. Cross-dialect sync uses drop-and-add for mismatches, so back up anything you care about before running.
Get a running start on your migration.
Free for SQLite; connect MySQL and PostgreSQL on a paid plan. No account needed to start.