SQL Boy
TutorialsPlayground

Format & Validate

SQL FormatterSQL MinifierSyntax Validator

Convert

JSON to SQLCSV to SQLSQL to JSONRegex to SQLExcel to SQLSQL Dialect Convertersoon

Visualize

ER Diagram GeneratorSQL Schema Diff

Generate

SQL Mock Data Generator

Analyze

SQL Query ExplainerSQL Query Analyzer

Workflow hubs

FormattingConversionSchemaAnalysis
View all tools
Daily ChallengeInterviewsCheat SheetBlog

© 2026 SQL Boy. Built for developers.

ContactPrivacyTermsAI Usage PolicyEditorial StandardsAboutRSS Feed

New conversation

What can I help with?

Ask about this page, get a hint on a challenge, or explore SQL concepts.

I know what's on this page and can give answers grounded in SQL Boy content.

Current page

Mock Data

/tools/mock-data

Usage status will load after login
SQL Boy
TutorialsPlayground

Format & Validate

SQL FormatterSQL MinifierSyntax Validator

Convert

JSON to SQLCSV to SQLSQL to JSONRegex to SQLExcel to SQLSQL Dialect Convertersoon

Visualize

ER Diagram GeneratorSQL Schema Diff

Generate

SQL Mock Data Generator

Analyze

SQL Query ExplainerSQL Query Analyzer

Workflow hubs

FormattingConversionSchemaAnalysis
View all tools
Daily ChallengeInterviewsCheat SheetBlog
Data Generator

Mock Data Generator

Turn any CREATE TABLE statement into realistic dummy data. Generate thousands of rows of SQL inserts instantly.

1. Paste your schema

Any CREATE TABLE DDL statement — MySQL, PostgreSQL, or SQLite syntax all work.

2. Configure columns

Each column gets an auto-detected generator. Override any field from the dropdown.

3. Copy INSERT SQL

Copy a ready-to-run INSERT statement directly into any SQL client or migration file.

Schema Input
|
id·INT
full_name·VARCHAR(100)
email·VARCHAR(100)
role·VARCHAR(50)
is_active·BOOLEAN
created_at·TIMESTAMP
idfull_nameemailroleis_activecreated_at
1James Jones[email protected]Lorem ipsum dolor sit amet, consectetur adipiscing elit.true2026-04-12
2Richard Rodriguez[email protected]Lorem ipsum dolor sit amet, consectetur adipiscing elit.true2022-12-29
3David Taylor[email protected]Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.false2025-01-08
4James Smith[email protected]Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.false2025-02-03
5Mary Lopez[email protected]Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat..true2024-02-29
6Jessica Brown[email protected]Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat..false2024-01-31
7Mary Miller[email protected]Lorem ipsum dolor sit amet, consectetur adipiscing elit.true2024-11-11
8James Miller[email protected]Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.true2025-07-26
9James Miller[email protected]Lorem ipsum dolor sit amet, consectetur adipiscing elit.true2022-02-15
10William Garcia[email protected]Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.true2021-07-10

Schema Templates

Click any template to load it into the generator above

Generator Types

All 13 built-in generators — use the type key value in any column dropdown

Type keyLabelCategoryExample
integer_incrementAuto-incrementNumbers1, 2, 3, 4 …
integer_randomRandom integerNumbers347, 12, 891
uuidUUID v4Identity550e8400-e29b-41d4-…
full_nameFull namePeopleJames Smith
first_nameFirst namePeopleMary, John
last_nameLast namePeopleJohnson, Lee
emailEmail addressPeople[email protected]
cityCityLocationNew York, Tokyo
countryCountryLocationUSA, France
date_pastDate (past 5 yr)Time2022-08-15
date_futureDate (next 2 yr)Time2027-03-01
booleanBooleanLogicTRUE / FALSE
text_sentenceText (sentence)ContentLorem ipsum dolor sit amet.

Auto-detection: how column names drive generator choice

ConditionAssigned generator
Column name is id or ends with _id + INT typeinteger_increment
Column name is id or ends with _id + UUID typeuuid
SQL type contains boolboolean
SQL type contains date or time, name includes birth / createddate_past
SQL type contains date or time (other names)date_future
Column name includes emailemail
Column name includes first_name / firstnamefirst_name
Column name includes last_name / lastnamelast_name
Column name includes name (any other)full_name
Column name includes citycity
Column name includes countrycountry
Column name includes description / bio / texttext_sentence
SQL type contains int (any other name)integer_random
Fallback (all other cases)text_sentence

SQL Type → Generator

What each column type gets by default — and when to override

SQL typeExampleAuto generatorNotes
INT / INTEGERid INTinteger_incrementWhen column is named id or *_id; otherwise integer_random
BIGINTviews BIGINTinteger_random—
SMALLINT / TINYINTage SMALLINTinteger_random—
DECIMAL / NUMERICprice DECIMAL(10,2)integer_randomNo decimal generator — override to integer_random or text_sentence for placeholder amounts
FLOAT / DOUBLE / REALscore FLOATinteger_random—
BOOLEAN / BOOLis_active BOOLEANboolean—
VARCHAR / CHARname VARCHAR(100)full_nameName-based heuristic runs first — email, name, city, country, etc.
TEXTbody TEXTtext_sentence—
DATEhire_date DATEdate_futuredate_past when column name includes birth or created
TIMESTAMP / DATETIMEcreated_at TIMESTAMPdate_pastcreated_at → date_past; future_at → date_future
UUIDid UUIDuuid—
ENUMrole ENUM('a','b')text_sentenceENUM values are ignored — the parser reads only the base type. Override manually.
JSON / JSONBmeta JSONtext_sentenceNo JSON generator — output will be a plain sentence, not valid JSON.

Seeding in Practice

How to load the generated INSERT SQL into real databases

PostgreSQL (psql)
# Paste the INSERT SQL into a .sql file, then:
psql -U postgres -d mydb -f seed.sql

Use -q flag to suppress row-count output when seeding large tables.

MySQL / MariaDB
# Save as seed.sql, then:
mysql -u root -p mydb < seed.sql

Prepend SET foreign_key_checks = 0; if you hit FK constraint errors during seeding.

SQLite (sqlite3)
sqlite3 dev.db < seed.sql

Use .read seed.sql inside the sqlite3 REPL for interactive sessions.

Wrap in a transaction
BEGIN;
-- paste your INSERT statement here
COMMIT;

Wrapping bulk inserts in a single transaction can be 10–50× faster than auto-committing each row.

Loop to exceed 1 000 rows
-- PostgreSQL: generate N copies of the same INSERT
INSERT INTO users (...)
SELECT ...
FROM generate_series(1, 10000);

The browser caps output at 1 000 rows. For larger datasets, use generate_series (PostgreSQL) or a simple script loop.

Parser Support & Known Limits

What the schema parser handles, partially handles, and silently ignores

FeatureSupportDetails
Table nameFullExtracted and used in the INSERT statement.
Column nameFullAll column names are extracted.
Base data typeFullINT, VARCHAR, BOOLEAN, DATE, TIMESTAMP, TEXT, UUID, etc.
Type length / precisionPartialParsed but not enforced — VARCHAR(10) and VARCHAR(255) behave the same.
AUTO_INCREMENT / AUTOINCREMENTFullAUTOINCREMENT is normalized to AUTO_INCREMENT before parsing.
PRIMARY KEYIgnoredRecognized syntactically but has no effect on generator choice (use id / *_id naming instead).
NOT NULL / NULLIgnoredGenerator always produces a value; nullability is not enforced.
DEFAULT valueIgnoredDefault expressions are stripped. The generator produces its own values.
UNIQUE / INDEXIgnoredNo uniqueness guarantee on generated data — duplicates are possible.
FOREIGN KEYIgnoredReferential integrity is not maintained. Seed parent tables first.
CHECK constraintIgnoredValues may violate CHECK conditions.
ENUM valuesIgnoredENUM('a','b') is treated as a plain type; actual values are ignored.
JSON / JSONB columnPartialParsed as a column, but filled with a text sentence — not valid JSON.
Generated / computed columnsIgnoredGENERATED ALWAYS AS expressions not supported and may cause a parse error.
Multi-statement filesIgnoredOnly the first CREATE TABLE statement is used.

Choose the guide that matches why you are seeding data

Mock rows are useful for different reasons: validating schema shape, testing value realism, or avoiding production PII altogether.

Generate rows only after the schema shape is believable

Use this path when fake data quality depends more on table design and relationships than on row count alone.

Designing Your First Database SchemaSQL Table Relationships Explained

Choose realistic values that match column meaning

Relevant when the generator is exposing weak type choices or when sample rows should behave like production data in tests.

SQL Data TypesGenerating Test Data with SQL

Need safe non-production data, not copied identities

Choose this route when masking or synthetic substitution matters more than perfectly mirroring live records.

Data Masking and AnonymizationDatabase Normalization Explained

Learn the schema and data concepts behind seeding

Use these guides when generated rows are only one part of the job and you still need stronger tables, types, or relationships

Generating Test Data with SQL

Good next step if you want to mix browser-generated data with SQL-native seeding techniques.

Designing Your First Database Schema

Helpful when you need better table structure before generating mock rows.

Data Masking and Anonymization Techniques in SQL

Important when staging or demo data should stay realistic without copying production identities.

SQL Data Types

Useful for choosing more realistic column types and understanding generator limitations.

SQL Table Relationships Explained

Important when your seed data needs to respect parent-child tables and foreign keys.

Common Questions

Related Tools

CSV to SQL

Turn spreadsheet-style tabular data into INSERT statements.

Schema Design Workflow

Jump to the broader schema workflow when mock data generation is only one part of design review.

Regex to SQL

Translate regex filters into SQL search conditions.

SQL Formatter

Format the generated SQL before sharing or reviewing it.

© 2026 SQL Boy. Built for developers.

ContactPrivacyTermsAI Usage PolicyEditorial StandardsAboutRSS Feed