Steps and examples

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

  1. 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.

  2. 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.

  3. 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.

Input
[{"id":9007199254740993,"name":"O'Reilly","active":true},{"id":2,"name":null}]
Expected output
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.

Input
code,active,note
00123,true,
00124,false,ready
Expected output
INSERT 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.