Short answer: Migrate in five stages: design the target schema first, clean and standardise the source data, split flat rows into related records, import in dependency order (parents before children), then validate with reconciliation counts before switching anyone over. The cleaning stage takes longest and determines whether the migration succeeds.
The most common migration failure is recreating the spreadsheet's shape in the database. A spreadsheet row typically mashes several entities together — client details, project details and invoice details all on one line. Importing that as-is gives you a slow spreadsheet with a nicer interface.
Design the schema first: which entities exist, what fields each holds, how they relate. Then work out how to get the spreadsheet's contents into that shape.
This is where most of the effort lives. Working through a copy of the source, never the original:
A row containing client name, project name and invoice amount needs to become three linked records. The method:
Parents before children, always. Companies before contacts, contacts before deals, deals before invoices. Airtable will create linked records automatically from matching text values, which is convenient and dangerous — a typo creates a new company rather than linking to the existing one. Import parents first, then match children against the existing records rather than letting them create new ones.
Import in batches and check the first batch thoroughly before running the rest.
Reconcile before anyone starts working in the new system:
Make the source spreadsheet read-only on a defined date and communicate it clearly. Migrations that leave the old system editable end with two live systems and a reconciliation problem that never resolves. Keep an archived copy indefinitely — you'll want it once.
For a few thousand records with moderate mess, one to two weeks. Cleaning typically consumes seventy percent of that.
Migrate what you'll actually use — usually two to three years. Archive the rest as a static export rather than importing it and slowing the working system.
The import can be scripted, and should be for anything above a few thousand rows. The cleaning decisions need a human who understands the business.
We handle migrations from spreadsheets, legacy CRMs and multi-source datasets. Talk to us.