How to Find Missing Records Between Two Database Exports

Most guides for this assume you can run a query - a LEFT JOIN or an EXCEPT against two live tables. That's the right approach if you have database access. But a common real situation is different: someone handed you two exported files - a CSV from the old system, a CSV from the new one, a spreadsheet a colleague sent over - and you need to know which records are missing from each, with no query, no login, and no database connection at all.

Quick answer

Extract the key column (ID, email, order number - whatever uniquely identifies a row) from each export and paste them into a list comparison tool. 'A Only' shows records in the first export that are missing from the second. 'B Only' shows the reverse. This is the same result a LEFT JOIN ... WHERE ... IS NULL query would give you, without needing to write or run one.

Compare your two exports now. Free, no account needed.

Open Compare Two Lists →

Step 1: extract just the key column

If your export is a full multi-column CSV or spreadsheet, isolate the single column that uniquely identifies each record - a customer ID, order number, email address, SKU. If it's already a plain column, copy it directly. If you need to pull one column out of a wider CSV export first, the Column Extractor does that by column number.

Step 2: paste each column into its own list

Paste the key column from Export A into List A, and the key column from Export B into List B, in the Compare Two Lists tool. Each unique ID should be on its own line.

Step 3: read A Only and B Only

  • A Only: records present in Export A but missing from Export B. If A is the old system and B is the new one, these are records that didn't migrate.
  • B Only: records present in Export B but missing from Export A. If B is the new system, these are typically new records created since the export was taken, or duplicates introduced during migration.

This is the direct equivalent of running the query in both directions - once to find what's missing from B, once to find what's missing from A - except you get both results from the same comparison at once, in the A Only and B Only panels.

How this maps to the SQL approach

If you do have query access, the equivalent SQL is a LEFT JOIN with a null check on the joined side:

SELECT a.id FROM export_a a
LEFT JOIN export_b b ON a.id = b.id
WHERE b.id IS NULL;

or the shorter EXCEPT operator on databases that support it:

SELECT id FROM export_a
EXCEPT
SELECT id FROM export_b;

A Only in the comparison tool is the same result as either query. The difference is that this approach works from two plain files with no query, no database connection, and no write access required - useful when you're an analyst, a support agent, or a QA tester who was handed export files rather than direct database access.

When you also need to check if values changed

Finding missing records only tells you which keys don't exist on one side. If you also need to know whether a matched record's data is different between the two exports - a status field, a price, an address - a plain list comparison won't show that, since it only compares the key column. Use the Column Compare tool instead: it matches rows by key and also flags rows where a chosen value column differs, similar to a SQL join that also compares a value column between both tables.

Handling formatting differences between exports

Exports from different systems often format the same ID differently - one keeps a leading zero, the other strips it; one is uppercase, the other lowercase. Turn on Ignore Leading Zeros and disable Case Sensitive in the comparison options so these formatting differences don't produce false "missing" results. If the exports are messier than that - inconsistent date formats, stray whitespace, null markers written differently - run each key column through the Data Cleaner first.

Comparing more than two exports?

Multi-List Compare handles 3 to 8 exports at once, with a Venn diagram of the overlaps.

Try Multi-List Compare →

Frequently Asked Questions

How do I find missing records between two exports without database access?
Paste the ID or key column from each export into the Compare Two Lists tool. A Only shows records in the first export missing from the second; B Only shows the reverse. No query, no login to the source database needed.
What's the SQL equivalent of what this tool does?
A Only is equivalent to SELECT id FROM export_a LEFT JOIN export_b ON export_a.id = export_b.id WHERE export_b.id IS NULL, or the shorter SELECT id FROM export_a EXCEPT SELECT id FROM export_b in databases that support EXCEPT. The comparison tool does the same set operation without you needing to write, connect, or have permission to run either.
I only have the exported files, not database credentials. Can I still do this?
Yes - that's exactly the situation this covers. If you were handed two CSV or spreadsheet exports and have no way to run a query against the source systems, extract just the key column (customer ID, order ID, whatever uniquely identifies a row) from each export and compare those two columns directly.
What if I need to compare more than the ID - like check if a value also changed?
Use Column Compare instead of the basic list comparison. It matches rows on a key column like ID, then also flags rows where a second value column differs between the two exports - which is what a SQL join with a value comparison would show you.
Does row order matter?
No. Both the list comparison and Column Compare match by value or key, not by row position - so it doesn't matter if the two exports are sorted differently or one has extra rows inserted partway through.
My exports have leading zeros on IDs that get stripped in one file but not the other. What do I do?
Turn on Ignore Leading Zeros in the comparison options - it's built specifically for this, since Excel and some export tools silently strip leading zeros from numeric-looking ID columns while others preserve them as text.
Can I compare exports from three or more systems at once?
Yes. Use Multi-List Compare for 3 to 8 exports. It shows which records are missing from any one system, present in all of them, or present in only some - the multi-way equivalent of the two-export case.
Is this reliable for large exports, like tens of thousands of rows?
Yes, the comparison runs entirely in your browser and handles large pastes without needing a server round-trip. For very large exports (hundreds of thousands of rows), a database query is still faster if you do have direct access - this approach is aimed at the case where you don't.

Share this tool

Featured on ToolDirs
© 2026 ListDiff

Free online list and text processing tools.