How to Convert CSV to SQL INSERT: Step-by-Step
This tutorial walks you through converting a real CSV dataset into SQL INSERT statements using the CSV to SQL INSERT Generator. We'll cover parsing, column mapping, type overrides, NULL handling, and generating output for SQL Server.
Table of Contents
1 Start with a CSV Dataset
Here's the sample CSV we'll convert — a typical customer export with mixed types and some missing data:
id,name,email,signup_date,amount,active
1,Alice Johnson,[email protected],2024-01-15,250.00,true
2,"O'Brien, Pat",[email protected],2024-02-20,,true
3,Carol Williams,[email protected],2024-03-10,0,false
4,José García,[email protected],2024-04-05,420.75,true
5,,n/a,2024-05-18,89.99,none
This dataset includes: a single quote in a name, a comma inside a quoted field, empty values, Unicode characters, and null-like tokens (n/a, none).
2 Paste the CSV
Open the CSV to SQL INSERT Generator and paste the CSV into the input area (or drop a .csv file onto the drop zone). The tool auto-detects the comma delimiter and parses the first row as headers.
The Data Preview panel shows the first 20 rows in a grid, and the tool reports "5 rows, 6 columns" to confirm the parse was successful.
3 Review Column Mapping
The Column Mapping table shows each column with its inferred type:
id→ intname→ stringemail→ stringsignup_date→ dateamount→ floatactive→ bool
You can rename columns (the sanitized output name), change types with the dropdown, or uncheck columns to exclude them from the INSERT output.
4 Select the Dialect
Click SQL Server in the dialect tabs. The tool will use [bracket] quoting for identifiers, N'...' for Unicode strings, BIT for booleans, and NVARCHAR for string columns.
5 Configure Options
Set the table name to customers and schema to dbo. Leave the defaults: 500 rows per batch, transaction wrapping ON, header comment ON. Enable Generate CREATE TABLE to include a table definition at the top of the script.
💡 Enable DROP TABLE IF EXISTS if you're regenerating the script for testing — it adds an IF OBJECT_ID check before the CREATE TABLE so the script is idempotent.
6 Generate and Review
Click Generate SQL. The output looks like:
-- Generated by Data Conversion Center
-- Dialect: sqlserver
-- Rows: 5
-- Batch size: 500
BEGIN TRANSACTION;
CREATE TABLE [dbo].[customers] (
[id] INT,
[name] NVARCHAR(255),
[email] NVARCHAR(255),
[signup_date] DATE,
[amount] DECIMAL(18,6),
[active] BIT
);
INSERT INTO [dbo].[customers] ([id], [name], [email], [signup_date], [amount], [active]) VALUES
(1, N'Alice Johnson', N'[email protected]', '2024-01-15', 250.00, 1),
(2, N'O''Brien, Pat', N'[email protected]', '2024-02-20', NULL, 1),
(3, N'Carol Williams', N'[email protected]', '2024-03-10', 0, 0),
(4, N'José García', N'[email protected]', '2024-04-05', 420.75, 1),
(5, NULL, NULL, '2024-05-18', 89.99, NULL);
COMMIT;
Notice how the tool handled every edge case:
O'Brien— single quote escaped toO''Brien"O'Brien, Pat"— comma preserved correctly inside the string- Empty
amountfor row 2 — becomes SQLNULL José García— Unicode preserved withN'...'prefixn/aandnone— recognized as null tokens, output asNULL- Booleans —
true/falsemapped to1/0for SQL Server BIT
7 Download the SQL File
Click Download .sql to save the file. The default filename includes the table name, dialect, and timestamp: customers_sqlserver_20260303_1430.sql.
You can also click Copy to copy the SQL to your clipboard and paste it directly into SSMS, Azure Data Studio, or any other SQL client.
Next Steps
For a deeper understanding of the conversion process — escaping rules, type inference, dialect differences, and batching strategies — read the CSV to SQL INSERT Complete Guide.
For large-scale imports (millions of rows), consider using native bulk loading tools. The SQL Server import guide and PostgreSQL import guide cover BULK INSERT, COPY, and GUI-based approaches.
👉 Ready to convert your data?
Open CSV to SQL INSERT →