CSV to SQL
Drop a CSV and get a table definition and the inserts to fill it. Column types are inferred per dialect, NOT NULL is applied where the data has no gaps, and values are escaped properly rather than concatenated.
Output appears here as you type.
Runs entirely in your browser. Nothing you paste here is uploaded or stored.
Questions
Is my file uploaded anywhere?
No. Parsing happens in your browser as a pure function, and the page is served with a Content-Security-Policy of connect-src ‘none’, so the browser refuses to let it open a network connection at all. That is what makes it safe to drop a real export — the kind with customer names and email addresses in it.
Why is my zip code column a string rather than a number?
Because a leading zero carries meaning. 01234 parsed as a number becomes 1234, and the zip code is gone. Any value with a leading zero stays a string, as do integers beyond the range JavaScript can represent exactly — which is where snowflake ids and long account numbers live.
How are the column types chosen?
From the values, per dialect. Integers become BIGINT (INTEGER on SQLite), decimals DOUBLE PRECISION, detected timestamps TIMESTAMPTZ or DATETIME, UUIDs a native UUID column on Postgres and CHAR(36) on MySQL. On MySQL a bounded string becomes VARCHAR rather than TEXT so it can be indexed.
Are the values escaped safely?
Single quotes are doubled, nulls emitted as NULL rather than an empty string, and numbers and booleans written unquoted in each dialect’s form. That said, generated SQL is for loading data you already have — do not build a habit of concatenating untrusted input into statements.