Skip to content

Rehearse MySQL CSV Imports Without Losing Identity

Plan a MySQL product import rehearsal with stable identifiers, duplicate handling, recovery evidence and repeatable row-level results.

GuideDeveloper toolsAnalytics

By

Updated 2 min read
Import rows without duplicating records: database illustration with IndieTools branding

Before importing a CSV into a MySQL-backed product, decide which field identifies an existing record and what a repeated import is allowed to change. A successful upload count does not show whether identities, relationships or historical decisions survived.

Two entries in the MySQL product catalogue illustrate the distinction. ToolVerified describes a software directory, while Smart Vending Machine Software describes connected vending operations. These are listing descriptions observed on October 3, 2026. Neither listing proves a specific CSV importer or recovery guarantee; the following is a proposed evaluation method when an import is available.

Build a deliberately awkward sample

Use a small synthetic file containing an unchanged existing record, an updated record, a new record and two rows that appear to describe the same entity. Include an empty optional field and a reference to a missing parent. Label the expected result for each row before running anything.

For a directory, a renamed product may still be the same product. For a machine inventory, a human-readable location label may change while the device identifier remains stable. Ask the operator which identifiers the application treats as authoritative and which fields are merely descriptive.

Keep external identifiers as text when their leading zeroes matter. A spreadsheet that changes the value before export can create an identity problem that the receiving database cannot detect from the file alone. Compare the exported CSV itself with the approved sample, not just its spreadsheet rendering.

Separate preview from commit

A useful preview explains which rows would create, update, skip or reject records. Ask whether validation checks relationships and uniqueness before changes become visible. If the product provides no preview, request an isolated rehearsal and an export showing the proposed result.

Define what an empty field means. It might mean “leave the current value unchanged” or “remove the current value.” Those operations are not interchangeable, especially when the existing value came from a verified source. An importer should not quietly choose the more destructive interpretation.

Also ask how publication status is handled. Importing a row should not unexpectedly approve content or expose a private record merely because a status column was omitted.

Prove recovery and repeatability

MySQL's InnoDB backup guidance describes several backup approaches. The existence of a backup file is not evidence that your application's records can be restored correctly. Confirm the operator's recovery procedure before a production import.

In the isolated rehearsal, import the sample twice. Compare identifiers, record counts, relationships and rejected-row explanations. A repeated file should follow a documented policy; it should not silently duplicate every record or overwrite a newer edit made after the first import.

Keep the reconciliation packet

Save the exact input checksum, mapping decisions, row-level results and before-and-after exports. These artifacts let another person explain what happened without trusting a success banner. Store them without credentials or unnecessary customer data.

For the related question of keeping each business event coherent, read the MySQL transaction review. Identity rules and transaction rules solve different problems, and a dependable import needs both.

More guide articles

How to Report Website Speed Improvements Without Cherry-Picking — IndieTools guide
IndieTools

How to Report Website Speed Improvements Without Cherry-Picking

A credible website speed improvement report preserves the baseline, explains the change, and shows comparable evidence afterward. It does not select the worst old run and the best new run, hide failed measurements, or turn a single route's improvement into a claim about the entire application.