SwapSQL

// real database engines — not find-and-replace

Convert MySQL to PostgreSQL — and back

Two ways to do it, both through real database engines: convert a dump file, or connect both servers and migrate live.

1 · Dump file

free ≤ 10 MB

Upload a mysqldump / pg_dump file, download converted, import-ready SQL.

// converter

uploads deleted on completion real engine, not regex free account, e-mail only

2 · Live, server-to-server

free ≤ 5 MB

No dump files — connect the source and the target, SwapSQL moves the data directly.

// live migration

source  mysql://prod-db:3306/shop ✓ connected

target  postgresql://new-db:5432/shop ✓ connected

→ 14 tables · 128,409 rows transferred

  • All four directions, incl. MySQL → MySQL and PostgreSQL → PostgreSQL
  • Works with RDS, Supabase, Neon, Cloud SQL and self-hosted servers
  • Credentials never stored · SSL enforced · full report at the end
Open live migration

How live migration works

// the difference

Why this converter is different

Engine-accurate, not regex

Most online converters rewrite your SQL with text replacement and break on edge cases. Here your dump runs through a real MySQL 8.0 / PostgreSQL 16 server, so quoting, charsets, dates and constraints behave exactly like production.

Both directions

MySQL → PostgreSQL and PostgreSQL → MySQL. The reverse direction — which most tools don't offer at all — maps types carefully (uuid, jsonb, arrays, timestamptz…) and explains every decision in the report.

Validated output

PostgreSQL → MySQL results are loaded into a real MySQL server before you download them — if it doesn't import cleanly, you'll know before you waste time.

Private by design

Isolated per-job databases on an internet-blocked network. Uploads are deleted immediately after conversion; results after 24 hours. Details.

// the report

Every conversion ships with a report

No silent guesses. Everything mapped, skipped or worth checking is written down — and PostgreSQL → MySQL output is loaded into a real server before you download it.

# conversion report — dump.sql → postgresql 16

tables converted ..................... 14/14

rows copied ......................... 128,409

auto_increment → sequences .......... 9 reset

enum types created .................. 3

note: 2 zero dates set to NULL (orders.shipped_at)

✓ valid for psql import

// process

How it works

01

Export your database

Run mysqldump or pg_dump. Two-minute guides: MySQL · PostgreSQL.

02

Upload & convert

Your dump is loaded into an isolated sandbox engine and migrated table-by-table, with a full report of anything that needs attention.

03

Download & import

Get a clean .sql file ready for psql or mysql. Files self-destruct after 24 hours.

// plans

Start free, upgrade when it matters

Free

$0

Dumps up to 10 MB (gzip ≈ 100 MB of SQL), 20 conversions a day, live migration for sources up to 5 MB. E-mail sign-in only.

Convert now

Pro

$9/mo

500 MB dumps, unlimited live migration of any size, conversion API, 200/day with a priority queue. Cancel anytime.

Compare plans

// faq

Frequently asked questions

Is this converter free?

Yes — dumps up to 10 MB convert for free with a free account (e-mail sign-in, no password, no credit card). Tip: gzip your dump first (.sql.gz is accepted); SQL text usually compresses about 10×, so the free tier covers databases of roughly 100 MB of raw SQL.

What files can I upload?

For MySQL → PostgreSQL: the output of mysqldump (.sql or .sql.gz). For PostgreSQL → MySQL: the output of pg_dump in plain (.sql), gzip (.sql.gz) or custom (.dump) format.

How accurate is the conversion?

Your dump is loaded into a real MySQL or PostgreSQL server, converted engine-to-engine, and exported back out — not rewritten with fragile text replacement. PostgreSQL → MySQL results are additionally validated by loading them into a real MySQL 8 server before you download them.

Is my data safe?

Conversions run in an isolated, internet-blocked sandbox with a dedicated database per job. Your uploaded dump is deleted the moment the conversion ends, and the converted file auto-deletes after 24 hours.

What about views, triggers and stored procedures?

Tables, data, indexes, primary/foreign keys, sequences and defaults convert automatically. Views and stored routines use engine-specific SQL, so they are reported (and included as comments for PostgreSQL → MySQL) for manual porting — every conversion comes with a clear report of anything skipped.

How are data types mapped?

See the full tables: MySQL → PostgreSQL types and PostgreSQL → MySQL types.