Turn JSON or CSV into reviewable SQL INSERT statements
Choose a database dialect and inspect the column mapping before generating SQL. This tool produces text only: it does not connect to a database, create a table or execute the script.
How to use this tool
Select the input format and destination
For JSON, provide an object or an array of objects. For CSV, include a header row and choose the separator. Select PostgreSQL or MySQL and enter one table name, such as users.
Inspect, select and rename columns
Select Inspect fields to review source columns, disable columns you do not want and edit destination names. Keep CSV type inference off when values such as identifiers must remain text.
Review the script against the target schema
Generate the preview, inspect NULL values, quoting and large numbers, then copy or download the full script. Confirm target column types and constraints in a test database before applying it.
Input and expected output
Preserve a large integer and escape a quote
Workspace settings: Input: JSON; database: PostgreSQL; table: users; rows per INSERT: 100. Include all columns without renaming them.
[{"id":9007199254740993,"name":"O'Reilly","active":true},{"id":2,"name":null}]INSERT INTO "users" ("id", "name", "active") VALUES
(9007199254740993, E'O''Reilly', TRUE),
(2, NULL, NULL);The integer is written without JavaScript rounding. PostgreSQL E-strings escape text explicitly. The second record's null name and missing active field both become SQL NULL; the target table must allow those values.
Keep CSV codes, booleans and empty cells as text
Workspace settings: Input: CSV; separator: comma; database: PostgreSQL; table: records. Leave Infer CSV numbers / booleans / null unchecked.
code,active,note
00123,true,
00124,false,readyINSERT INTO "records" ("code", "active", "note") VALUES
(E'00123', E'true', E''),
(E'00124', E'false', E'ready');The leading zeros and the literal text true/false remain strings. An explicitly empty CSV cell is an empty string; a missing cell in a shorter row becomes NULL. Review that distinction before importing.
Limits and checks
- Table names and column conflicts
- Enter one identifier, not public.users or a SQL expression. Duplicate destination column names and unknown source columns are rejected. Use Inspect fields to select or rename columns explicitly.
- Size limits and database-specific values
- Input is limited to 1 MiB, 10,000 rows and 100 columns; output is limited to 10 MiB. MySQL generation rejects numbers it cannot preserve within 65 digits and 30 decimal places. Other target-column restrictions can still reject a generated script.
Understanding the result
Are nested objects expanded into SQL columns?
No. Nested JSON objects and arrays are serialized as JSON text in one value. Choose appropriate destination column types or reshape the data before generating SQL.
Is keeping the number token enough to make an INSERT safe?
No. The tool avoids browser rounding, but the database column still determines precision, range and accepted values. It also cannot check permissions, uniqueness or application constraints without connecting to your database.