CSV to SQL INSERT generator: load a lead list into a database table
In short: Upload or paste a list with a header row and get INSERT statements with safe column names, quoted values and a batch size you choose, for PostgreSQL, MySQL or standard SQL. Limit: It writes INSERT statements only; it does not create the table or choose column types.
Upload a CSV or .xlsx file, or paste the cells with the header row first. Name the table, choose double-quote or backtick quoting, and set how many rows go in each INSERT. Column names are made safe, single quotes in values are doubled, and blank cells can be NULL. Download the .sql file or copy it.
Price: this tool is free. Checking a whole email list is from $9/mo, and the first 100 checks are free with Google, no card. Check your list free nowSee pricing
Sample result
Three example rows become one INSERT statement; Ben O'Hart is written 'Ben O''Hart' and a blank cell is NULL.
- Statements
- 1
- Table
- leads
- Quoting
- Double quotes
What this means for you
Rows in a table are not working mailboxes; a check shows which addresses exist.
- PostgreSQL, MySQL, standard
- Safe column names
- Quotes doubled
- Rows per INSERT
- SQL
- CSV
- Lead list
By SimpleVerifier Team · Last updated · Runs in your browser; nothing you paste is sent to us
Loading this list into a database?
- Download the SQL here, or use the check button under the result, which carries its addresses across.
- Upload or paste it at /verify. Every address gets a live mailbox check, and the first 100 email checks are free with a Google sign-in, no card.
How do I turn a CSV into SQL INSERT statements?
- Upload the file as a CSV or .xlsx, or paste the cells with the header row first.
- Type the table name and choose the quoting for your database.
- Set how many rows go in each INSERT, and whether blank cells are NULL.
- Read the first statement, then download the .sql file or copy the SQL.
Example
- You enter
- Three rows with Email, Name, Company and Employees columns, table name leads, standard quoting, 500 rows per INSERT and blank as NULL.
- You get
- One INSERT INTO "leads" statement with 3 value rows. Ben O'Hart is written 'Ben O''Hart' and his blank Employees cell is NULL.
- Limits
- Runs in your browser with no row cap; an uploaded file can be up to 25 MB. Nothing is uploaded.
How are names and values made safe?
Column and table names are lower-cased and reduced to letters, digits and underscores, so Email Address becomes email_address and a name can never close its own quotes. A name that starts with a digit gets an underscore in front.
In values, every single quote is doubled, so O'Hart is written 'O''Hart'. For MySQL a backslash is doubled as well, because MySQL reads it as an escape character in a string.
What does the batch size do?
Each INSERT holds up to the number of rows you choose. A few hundred rows per statement is usual: one statement per row is slow, and one for a whole large list can exceed a server's packet or statement limit.
Create the table first. This tool writes the INSERT statements only; it does not guess column types, so every value is text unless you tick the option for plain numbers.
Run the file on a copy first
The file is plain text that you run yourself. Read the first statement, run it against a test table, and compare the row count before you load the real one.
Nothing is executed here and the list is never uploaded. If you only need a different file format, the CSV to JSON converter does the same job for APIs.
Who uses this tool, and for what?
- Developers
- Seed a test table from a lead export without writing an import script.
- Cold emailers
- Load a cleaned list into the database behind a custom sender or dashboard.
- Analysts
- Move a spreadsheet into a table so it can be joined with other data.
What can’t this tool tell you?
- It writes INSERT statements only; it does not create the table or choose column types.
- Names are reduced to letters, digits and underscores, so two headers can end up with the same base name; the second gets _2.
- It reads the first sheet of a workbook only.
- Review the SQL before you run it. It does not check whether an address exists.
Common questions
- Does it create the table?
- No. It writes INSERT statements only. Create the table first with the column names shown above the SQL.
- Which databases does it suit?
- Standard SQL and PostgreSQL use double quotes for names. MySQL and MariaDB use backticks. Other databases usually accept one of the two.
- How are quotes inside a value handled?
- A single quote is doubled. For MySQL a backslash is doubled too.
- Are numbers quoted?
- By default yes: every value is text. Tick the option to write plain numbers bare. Numbers with a leading zero stay quoted either way.
- Is my list uploaded?
- No. The SQL is built in your browser and nothing is sent anywhere unless you choose to check the addresses afterwards.
- Does it check the addresses?
- No. It only changes the format. A mailbox check shows which addresses exist.
A tidy list can still be full of dead addresses.
Extracting, deduplicating and syntax checks all work on the text of an address. None of them can tell whether the mailbox exists. Only the server that hosts it can answer that, through an SMTP check, and that is what the paid product does.
- Upload the cleaned file as it is: CSVs up to 100,000 rows
- A real SMTP mailbox check on every row, with catch-all detection
- Small list? Starter at $9/mo covers 2,500 emails a month, cancel anytime
Plans from $9 a month, cancel anytime, no contract. Sign in with Google and your first 100 email checks are free, no card. The free tools stay free either way.