// 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 MBNo 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
// 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
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.
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 nowPro
$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.