csv → sql · bulk insert · numeric inference · live

Generate SQL INSERT from CSV

Turn a CSV file into INSERT statements for any SQL database. Numeric strings stay unquoted, blanks become NULL, and you can choose one bulk statement or one per row.

CSV → SQL INSERT
Input
100 B
4 lines
Output
175 B
5 lines
Status
ready
live
Ratio
1.75×
out/in
input · csv
output · sql
INSERT INTO `data` (`id`, `name`, `age`, `email`)
VALUES
  (1, 'Alice', 30, 'alice@example.com'),
  (2, 'Bob', 25, 'bob@example.com'),
  (3, 'Carol', 45, 'carol@example.com');
Quick Start

How CSV becomes SQL

RFC 4180 parsing splits the header row from data rows. Each value is checked for an integer or decimal shape; matching values stay unquoted, everything else is single-quoted with embedded quotes doubled.

  1. 01

    Set table name

    Backticks are added automatically — switch to double quotes for ANSI databases.

    Parsing is strict-but-tolerant — comments and trailing commas are accepted on input where the source format historically permits them; output stays canonical.

    tablestricttolerantliveparse
    tbl · sourcename · live
    data
    loaded · parsedtarget · ready
  2. 02

    Paste CSV

    First row is the column list; remaining rows are values.

    Conversion preserves type information where the target supports it (numbers stay numeric, booleans stay boolean) so the destination parser never has to re-coerce.

    inputtype-preservinglosslesslivememoised
    in · optionscsv · live
    id,name
    1,Alice
    options applied · liveround-trip
  3. 03

    Pick a shape

    Bulk INSERT emits one statement with comma-separated tuples; toggle off for one INSERT per row.

    Re-encoding is idempotent: running output back through the same converter produces the same bytes, which keeps round-trips git-friendly.

    shapeidempotentround-tripdiff-cleandeterministic
    bulk · convertedoff? · ready
    INSERT INTO ...
    VALUES (...), (...)
    converted · livediff-clean
  4. 04

    Copy or download

    Drop into a migration file, a seed script or paste straight into psql / mysql.

    Copy writes via navigator.clipboard.writeText; downloads use the target’s native MIME so editors apply the right syntax highlighting on open.

    exportclipboardtarget MIMEblobclient-side
    ✓ · copiedready · done
    ✓ Copied
    shipped · ready to shipsuccess
Pro tips

Converting between formats, safely

Pick the strictest source format

Lossy formats hide bugs. Choose JSON or YAML as your source-of-truth, convert downstream as needed.

Round-trip in CI

If your converter is idempotent, your CI can verify A → B → A equals the original. Catches subtle data loss.

Numbers vs strings differ

YAML/TOML have a number type; CSV doesn’t. Quote IDs in CSV to keep leading-zero values intact.

Watch character encoding

Source format may be Latin-1 / Windows-1252; target should be UTF-8. Convert encoding before structure.

Preserve comments where you can

YAML and TOML support comments. Don’t silently drop them — they often encode intent.

Schema-aware beats blind

Use a schema to guide conversion. Field types, required-ness, and defaults survive better with structure.

Use Cases

When to import CSV as SQL

Seeds, migrations, one-off loads.

Database seeds

Generate seed scripts for development environments. Type information survives: numbers stay numeric, booleans stay boolean, strings stay strings. The destination parser doesn't have to re-coerce, which avoids the "'true' becomes "true"" bug class.

round-trip safe

Spreadsheet import

Move an Excel export straight into a relational table. Run output back through the inverse converter to verify idempotent round-trips in CI. A → B → A should produce byte-identical input — if it doesn't, you've found data loss.

type-preserving

Migration backfills

Backfill a new column from a CSV produced by another team. Comments and metadata survive where the target format supports them (YAML, TOML, HCL). The tool doesn't silently drop intent-encoded annotations, which keeps your config self-documenting.

schema-aware

Snapshot fixtures

Freeze production-like data as SQL fixtures for tests. Pair with a schema (JSON Schema, OpenAPI, Zod, Pydantic) to catch shape drift on either side. Catch breaking changes at conversion time rather than at runtime in production.

lossless

Ad-hoc reports

Re-import an exported report into a staging DB for SQL analysis. Output respects target-format conventions: quoting in CSV, indent in YAML, brackets in JSON. Existing parsers don't need patches, and the result drops into legacy pipelines unchanged.

diff-clean

Bulk uploads

Convert CSVs from third parties into reproducible SQL. Encoding-aware: handles UTF-8 vs UTF-16 vs Latin-1 / Windows-1252 transparently. The character-set surprise that breaks "works on my machine" doesn't apply here.

spec-grade
FAQ

Frequently asked questions

Integers and decimals (using a dot) stay unquoted. Everything else is treated as text and single-quoted with embedded quotes doubled per SQL standard.
Empty cells and the literal text NULL emit as unquoted NULL.
Quotes are doubled but the output is meant for one-off loads, not user input. Review before running against production.
Bulk INSERT is faster for large loads; single INSERTs are easier to skim during code review or partial replay.
No. CSV parsing and SQL generation are both local to your browser.
Suggest a tool

Something missing?

Tell us what you need. We ship the top requests every two weeks.

Sent straight to the maintainers · no account needed
47 in queue·8 shipped this month
Request queued. Thanks!