pgloader vs DBShifts
pgloader is a well-established open-source tool for loading data into PostgreSQL, notably from MySQL, SQLite and SQL Server. It is a single-shot loader driven by a command or a load file, and it is free.
When pgloader is the better choice
Stated first, because it is often true and you will find out either way.
- ✓PostgreSQL is your only target and you never need to migrate in the other direction.
- ✓The migration is a one-off you can run during a maintenance window, with no requirement to keep the source live.
- ✓You want a free, scriptable tool with no account and no service in the path.
Where DBShifts is different
Differences, not a scorecard.
Any direction, not only into PostgreSQL
pgloader loads into PostgreSQL. DBShifts moves between eleven engines in either direction, including MySQL, MariaDB, SQL Server, Oracle, SQLite, MongoDB and the Postgres-compatible distributed engines.
The source can stay live
pgloader is a point-in-time load. DBShifts supports change data capture, so the target keeps up with writes while the source serves traffic, and go-live becomes a staged cutover you can abort until the final switch.
Verification is part of the run
After loading, you still have to answer 'did everything arrive intact?' yourself. DBShifts compares row counts and type-aware checksums on both sides and reports mismatches per table.
Resumable rather than restartable
An interrupted load is usually re-run from the beginning. DBShifts checkpoints per table and batch, so it resumes where it stopped.
Questions people ask about pgloader
Can pgloader migrate from PostgreSQL to MySQL?
No — pgloader loads INTO PostgreSQL. It reads from MySQL, SQLite and SQL Server among others, but PostgreSQL is always the destination. If you need the other direction, or any pair that does not end at PostgreSQL, you need a different tool.
Does pgloader support zero-downtime migration?
It is a point-in-time load rather than a replication tool, so the usual approach is a maintenance window. DBShifts supports change data capture, which keeps the target current while the source serves traffic and turns go-live into a staged cutover you can abort.
What happens if a pgloader run is interrupted?
You generally re-run it. DBShifts checkpoints per table and per batch, so an interrupted transfer resumes from where it stopped rather than starting over — which matters once a table is large enough that a restart costs hours.
Try it against your own schema.
Connect a database read-only and DBShifts reports every lossy conversion before anything moves. Free tier, no card.