This is an original planning guide. It is not a vendor manual, an official standard, or legal advice. Example addresses use documentation ranges. Review every command before you paste it.
A converter drafts a dialect. It does not move the database.
The converters on this site draft SQL from one engine's habits toward another's: MySQL and PostgreSQL, SQL Server and PostgreSQL, Oracle and PostgreSQL, SQL Server and MySQL. A draft is text. It does not connect, and it does not mean the types survived. The migration guide is the rehearsal and the downtime. The backup guide is the restore you need before any real cutover.
One table. Take a create statement and a few invented rows. Convert. Read every type. A string that became too short, a date that changed meaning, and an identity column that disappeared are the findings. They go in the ticket before you convert a second table.
Functions and procedures rarely survive a mechanical pass. If the draft left a comment where a function was, that function is work, not a success. Do not paste the draft into production because the create statement ran on an empty lab.
Character set and collations are part of the table. A conversion that sorts differently is a conversion you have not finished. Write an example word you invented and show the order on both sides.
One lab table, one draft, a list of mismatches
Create a small table on the source lab with a number, a short text, a date, and a key. Insert three invented rows. Convert the create statement. Create it on the target lab. Load the rows by hand or with a statement you read.
Compare the three rows. Write what matched and what did not. If everything matched, write that too, and still name the types, because the next table will not be this easy.
Keep the application where it is. A path is not a cutover. The migration guide gets the mismatch list and the minutes you spent, which are not yet a downtime promise.
Do not convert a dump of a database you do not administer, and do not paste production rows into the converter.
A change you can finish
The change is the mismatch list for one table. Schema on production waits for the migration guide's rehearsal.
Rollback is dropping the target lab table.
- Pick one table you can explain.
- Build it on the source lab with invented rows.
- Convert the statement and read every type.
- Create it on the target lab.
- Compare three rows.
- List mismatches, including none.
- Stop. The next table is later.
Mistakes that outlive the command
database migration paths fails in the same few ways. Each one looks finished on the day you type it. The list is here so the ticket can forbid them before the window, not so you can recognise them in an incident review.
- A whole database converted unread.
- Production rows pasted into the tool.
- A type change ignored because the create succeeded.
- Procedures assumed to have moved.
- The application repointed.
- No backup story behind a later cutover.
- Two pairs of engines in one window.
- A sort difference you did not test.
- An empty target called a finished migration.
- A draft saved as the only copy of the source statement.
Decisions to write down before the window
One decision for database migration paths: One source engine and one target engine are named. One table was converted. Types were read. Three invented rows were compared. Mismatches are listed. Procedures are called out as not done. The application still points at the source. The migration guide owns the rehearsal. The backup guide owns the restore. No production data entered the converter. The source statement is still in the ticket. And a second person saw the mismatch list.
The hour you stop
Write the database name, the host, and the clock time before you change anything for database migration paths. If this database is serving people and you do not have a copy, this hour is a plan. A plan you can read tomorrow is a success. A change you cannot undo is not.
Use a lab or a restored copy. The rows you read are rows you are allowed to hold. You do not point a client at a database, a cluster, or an account you do not administer. The tools on this site run in the browser. They do not log in, and they do not scan.
prompt-for-this is a reminder that a secret is missing. It is not a password, a token, or a key you save. The real secret stays in the password store. If a connection string, a log, or a ticket still contains a live secret, stop and rotate it. Then delete the copy.
One change. A config line, an index, a grant, and a restore do not share a window. If two things move and the outcome is wrong, you will not know which one did it. The rollback is the previous file or the backup you already tested.
A second person reads the scope aloud: which host, which database, which account. If they cannot find it in the ticket, the ticket is not ready. Silence is not agreement.
The lab listens on localhost. 127.0.0.1 is the address you bind until a firewall story exists. example.com is not your host. A generated file that listens on every address is a file you edit before it runs.
Do not run a statement you cannot undo. A delete or a drop without a backup and a where-clause you have read is the mistake this page is here to prevent. Read the statement. Count the rows it will touch. Then decide.
Keep the previous config and the previous dump. A generator draft is not the previous file. The previous file is what you put back if the new one is wrong. You practised the reload with a second session open when the change can lock you out.
If a step fails twice, stop. The failure is the result. Adding a command from a forum beside a half-applied config produces a database nobody can explain. Rebuild the lab from the copy you kept.
When the checks pass, the next database waits until someone else can repeat the proof from the notes. database migration paths is done for this window when the proof is written, not when the client printed a prompt.
This page is a planning guide. It is not a vendor manual, not an official standard, and not legal advice. If an auditor must see the decision, they see the ticket and the evidence, not this paragraph.
Hand the finished note to the neighbouring guide that owns the next step, and leave this database alone until that guide has its own window.
Path checks before you convert a second table
Confirm this before you call the change done: The engines and versions are written. The source statement is saved. The target table exists only on the lab. Three rows were compared. Type mismatches are listed. A sort example was checked or explicitly skipped. Procedures are not marked done. No production rows were pasted. The application was not repointed. A second person read the list. The next table is not started. Backup and rehearsal are named as the next guides. The hostname in the prompt matches the hostname in the ticket for database migration paths. The result line includes the time and the person, not only the command. You can point at the rollback value without searching a chat history. And done is a sentence a second person can repeat: the proof for database migration paths happened, and the next host is not started early. If one of those fails, stop.
Tools for this guide
These tools run in the browser on this site. They do not log into your machines.
- MySQL to PostgreSQL Converter
- PostgreSQL to MySQL Converter
- SQL Server to PostgreSQL Converter
- Oracle to PostgreSQL Converter
- SQL Server to MySQL Converter
- MySQL to SQL Server Converter
Related pillar guides
Guides in this cluster
These supporting pages belong to this pillar.
- Migration Guide: MySQL to PostgreSQL Migration Guide
- Migration Guide: PostgreSQL to MySQL Migration Guide
- Migration Guide: SQL Server to PostgreSQL Migration Guide
- Migration Guide: Oracle to PostgreSQL Migration Guide
- Migration Guide: SQL Server to MySQL Migration Guide
- Migration Guide: MySQL to SQL Server Migration Guide
- Migration Guide: Oracle to SQL Server Migration Guide
- Migration Guide: PostgreSQL to SQL Server Migration Guide
- Migration Guide: SQLite to PostgreSQL Migration Guide
- Migration Guide: SQLite to MySQL Migration Guide
- Migration Guide: MySQL to SQLite Migration Guide
- Migration Guide: MariaDB to MySQL Migration Guide
- Migration Guide: Oracle PL/SQL to PL/pgSQL Migration Guide
- Migration Guide: T-SQL to PL/pgSQL Migration Guide
- Migration Guide: IBM Db2 to PostgreSQL Migration Guide
- Migration Guide: MS Access to SQL Server Migration Guide
- Migration Guide: Sybase ASE to SQL Server Migration Guide
- Migration Guide: Relational Schema to MongoDB Schema Migration Guide
- Migration Guide: Redis Config to Valkey Config Migration Guide
- Migration Guide: Elasticsearch to OpenSearch Migration Guide
- Migration Guide: MySQL Stored Procedure to PostgreSQL Function Migration Guide
Companion: Cloud: Cloud Migration Strategies (7 Rs).