SQLParity

Test Data Generator

Paste a CREATE TABLE and get realistic rows plus the values that break loaders, APIs and queries — apostrophes, emoji, the longest string a column allows, leap days, the largest number a type holds. Each one is marked with the reason it is there.

NULLs in other rows
1

Table definition

9 columns read from customers.

2

Columns

How each column is filled, and how many traps it gets.

  • customer_idbigintunique keywhole number
  • full_namevarchar(40)NOT NULLtext16 edge cases
  • emailvarchar(120)text17 edge cases
  • countrychar(2)text17 edge cases
  • balancenumeric(12,2)decimal6 edge cases
  • is_activebooleantrue / false3 edge cases
  • signup_datedatedate7 edge cases
  • last_seentimestamptimestamp7 edge cases
  • notestexttext16 edge cases
3

Generated rows

50 rows, 89 deliberate edge cases. Hover a marked value to see why it is there.

#customer_idfull_nameemailcountrybalanceis_activesignup_datelast_seennotes
11000O'BrienO'BrienO'0true2024-02-292024-02-29 23:59:59O'Brien
21001Say "hello"Say "hello"Sa9999999999.99false1970-01-011970-01-01 00:00:00Say "hello"
31002C:\temp\newC:\temp\newC:-9999999999.99true1999-12-312026-03-29 02:30:00C:\temp\new
41003Zoë Müller-ÑúñezZoë Müller-ÑúñezZo0.01false2038-01-192026-11-01 01:30:00Zoë Müller-Ñúñez
51004東京都 渋谷区東京都 渋谷区東京-0.01false1900-01-012038-01-19 03:14:08東京都 渋谷区
61005مرحبا بالعالممرحبا بالعالممر62473.84true9999-12-312026-12-31 23:59:59.999مرحبا بالعالم
71006Thanks 🙂👍Thanks 🙂👍Th88205.00true2023-04-162024-01-05 11:45:49Thanks 🙂👍
81007␣␣padded␣␣␣␣padded␣␣␣␣NULLfalseNULL2020-03-16 16:35:10␣␣padded␣␣
91008‹empty›‹empty›‹empty›6178.08false2020-03-062025-07-15 10:50:09‹empty›
101009NULLNULLNU80901.49trueNULLNULLNULL
111010line one↵line twoline one↵line twoli59672.35false2021-12-292025-08-22 21:44:56line one↵line two
121011tab⇥separatedtab⇥separatedta20418.81trueNULL2024-06-21 20:17:25tab⇥separated
131012a, b; ca, b; ca,92783.06NULL2022-10-312020-11-25 12:23:17a, b; c
141013007007001584.27true2025-11-28NULL007
151014xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx93485.84false2023-06-022020-10-16 10:07:56xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
161015éééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé56279.46true2022-03-192022-02-14 02:22:08charlie 16
171016Margaret HaddadNULLNULLNULLNULLNULLNULLNULL
181017Ingrid Chendonald.18@example.comBR69671.45false2020-08-122025-05-26 16:21:59hotel 18
191018Alan Larsenkatherine.19@example.comNG33592.78false2022-02-222022-08-01 01:40:38golf 19
201019Barbara Lovelacechidi.20@example.comUS60392.65trueNULL2024-08-27 02:06:35charlie 20
211020Barbara Lovelacemei.21@example.comFR17083.24true2022-11-082024-07-04 17:28:44charlie 21
221021Lars Liskovaiko.22@example.comAU32536.24true2021-06-142024-07-25 23:12:17alpha 22
231022Barbara Lovelacekatherine.23@example.comCA91261.88true2025-09-132025-07-09 21:37:16delta 23
241023Alan Tanakakatherine.24@example.comJP49199.44false2020-05-08NULLecho 24
251024Chidi Sharmafatima.25@example.comUS59938.32true2024-06-222026-02-28 01:49:43charlie 25
261025Fatima Turingada.26@example.comNULL72635.72false2024-08-242021-10-17 10:37:15alpha 26
271026Edsger Hamiltoningrid.27@example.comES66635.02true2023-01-062022-03-07 14:41:39bravo 27
281027José Dijkstrajose.28@example.comDE376.45falseNULL2022-10-29 22:58:06alpha 28
291028Fatima Lovelacekatherine.29@example.comJPNULLfalse2025-03-262025-04-15 15:04:13bravo 29
301029Grace HopperNULLKE56099.58true2022-03-212025-06-22 10:38:35bravo 30
311030Mei Chenjose.31@example.comFR56853.04true2024-12-052024-07-07 11:09:28echo 31
321031Mei Chenedsger.32@example.comKE38684.45true2022-09-182023-07-02 20:46:16echo 32
331032Fatima Larsenedsger.33@example.comDE63075.93false2021-03-222025-12-06 03:22:59delta 33
341033Grace Hamiltonchidi.34@example.comDE71726.56true2020-08-222022-06-19 20:30:30golf 34
351034Chidi HopperNULLKE85605.82false2022-04-08NULLbravo 35
361035Margaret Dijkstraingrid.36@example.comDE10907.73false2020-10-06NULLNULL
371036Barbara Johnsonmei.37@example.comUS64913.60NULL2025-03-312021-05-05 15:34:39echo 37
381037Alan Hopperdonald.38@example.comES95157.41true2024-06-072025-01-22 09:29:13bravo 38
391038Chidi Tanakakatherine.39@example.comJP4984.86false2020-04-222024-09-04 16:24:34charlie 39
401039Fatima Hamiltonchidi.40@example.comIN8745.92false2023-02-052024-01-27 02:45:23foxtrot 40

Showing the first 40 of 50 rows. The download has them all.

4

Output

Written for PostgreSQL: its quoting, string escaping and literal forms. Load it into both systems, then compare them with Parity Run.

How to Use Test Data Generator

How to generate test rows that find the values your code mishandles.

1

Paste a CREATE TABLE

From any of the 16 dialects. Column types, lengths, precision and NOT NULL are read from it, so every value fits the column it is for.

2

Get rows that find the bugs

The first rows walk each column through its traps — quotes, encodings, limits, awkward dates — each marked with the reason it is there. The rest are plausible values.

3

Load it anywhere

Download SQL INSERTs for your dialect, CSV or JSON Lines. Seed a test database, fill a staging table or feed a pipeline — and if the rows pass through two systems, compare both ends with Parity Run.

Frequently Asked Questions

Common questions about privacy, supported dialects, and how Test Data Generator works under the hood.

Which values does the Test Data Generator include?

For text: apostrophes, double quotes, backslashes, accented, Japanese and right-to-left text, emoji, leading and trailing spaces, an empty string next to NULL, the word NULL, embedded newlines and tabs, leading zeros, and the longest value the column allows. For numbers: zero, negatives and the largest and smallest values the type holds. For dates and times: a leap day, the Unix epoch, the 32-bit time limit and timestamps inside daylight-saving changes.

Is the same data generated every time?

Yes, for the same table definition, options and seed. That makes a failing row reproducible: keep the seed, and the exact rows can be generated again. Change the seed for a different set.

Will the SQL load into my database?

The INSERT statements are written for the dialect you choose — its identifier quoting, string escaping, date literals and boolean form. On SQL Server, text outside plain ASCII is written with an N prefix so it is not silently turned into question marks.

Is my table definition uploaded?

No. The definition is read and the rows are generated inside your browser tab. Nothing is sent to a server.