SEO MachineSoftware, growth, AI & sales, done for you

Service · Software developmentSoftware development

Database migration without losing a row, or a night's sleep

We move your data from where it is to where it should be: hosted Postgres or Supabase to a database you control, a customer base out of an old tool into a new platform, spreadsheets into a real database. Each migration is rehearsed on a copy, checked row by row against the source, and keeps the old system available until you sign off.

What we do for you

  • An inventory of the data: tables, volumes, files, users and permissions, and which apps write to it
  • A mapping document for imports from another tool: which old field goes where, and what happens to the odd cases
  • Rehearsal on a copy, with timings, before the real move
  • Counts and samples compared between source and target after each step
  • Users, roles, permissions and row-level security recreated and tested, not assumed
  • Applications repointed to the new database, then watched
  • Backups configured on the target, and a documented way back

Who it is for

  • Fits: teams leaving a hosted database service for cost, control or data location reasons
  • Fits: businesses switching from an old booking, CRM or management tool to a new platform and needing their history
  • Fits: companies whose real database is a set of spreadsheets
  • Does not fit: live replication of very large databases with zero tolerance for any interruption; we would tell you and plan it differently

What we have migrated

  • Eleven Supabase databases moved to a self-hosted Postgres.
  • A customer base moved from a previous booking tool into the booking and customer platform we built for a restaurant group, now live.
  • The data behind our own platforms, including a management SaaS for training organisations in France that runs on Next.js and Postgres.

The tools, and their limits

PostgreSQL's own pg_dump exports a database consistently even while it is in use, without blocking readers or writers, in plain SQL or archive formats that pg_restore can load, including in parallel. It can dump from older servers and restore into newer PostgreSQL versions, but not dump from a server newer than itself. The PostgreSQL docs also warn that restoring a dump runs code chosen by the source's superusers, so we inspect dumps from sources we do not control.

Supabase describes Postgres as its core and documents moving data with standard tools (pg_dump, pg_restore, logical replication). Its guide also lists what does not move by itself: roles and privileges must be recreated, row-level security must be re-enabled, and logical replication does not copy schema changes or sequences. Those are exactly the details that break an app after a migration, so they are on our checklist.

How a migration runs

  1. Freeze the picture. Inventory, volumes, dependencies, and the order apps must switch.
  2. Rehearse. Full copy to the target, timings measured, issues fixed.
  3. Verify. Row counts per table, samples compared, critical queries run on both sides.
  4. Switch. In a quiet window, writes paused if needed, final sync, apps repointed.
  5. Watch. Errors and performance checked; the source kept read-only until you agree to retire it.

What we need from you

  • Admin access to the source and target, or the people who hold them
  • The list of apps and integrations that read or write the data
  • A window when a short write pause is acceptable, if one is needed
  • Your sign-off before the old database is switched off, and your decision on deleting it

Questions we get

How long will the site be unavailable?

Often not at all for reads. For writes, we measure the real time during rehearsal and agree a window with you; for small databases it is usually short.

What if something goes wrong?

The source stays intact and available until you sign off, so going back means repointing the apps. That is why we rehearse first.

Can you import from a tool that only exports CSV?

Yes. We map each column, clean duplicates and formats, import into the new database and give you a report of what could not be matched.

Is our data copied anywhere else?

Only to the target and to the backups you approve. Copies used for rehearsal are deleted at the end, with your agreement.

Sources

  1. PostgreSQL documentation: pg_dump (checked 2026-10-06)
  2. Supabase Docs: migrating from Postgres (checked 2026-10-06)
  3. Supabase Docs: database backups (checked 2026-10-06)
  4. PostgreSQL documentation: row security policies (checked 2026-10-06)

Want to know what we would do first?

Tell us your business, your town and your website. We come back by email with a first plan: growth, AI agents, sales or all three.

Get your growth plan
Get your growth plan