From SQL DDL to TypeScript, Zod, Prisma and Drizzle — plus clean CSV data, all offline
Database schemas and exported spreadsheets are some of the most sensitive files a developer handles. They describe your users, orders and internal structure. Pasting them into a random online converter means trusting a server you cannot inspect. Both jobs below run entirely in your browser.
Start from the source of truth
Your SQL migration already describes every column, type, default and relation. Instead of writing interfaces and validators by hand, paste the DDL into the SQL DDL to Schema generator and choose PostgreSQL, MySQL/MariaDB or SQLite.
CREATE TYPE user_role AS ENUM ('admin', 'editor', 'viewer');
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
email VARCHAR(255) NOT NULL UNIQUE,
role user_role NOT NULL DEFAULT 'viewer'
);
Six outputs from one paste
- TypeScript interfaces for your API and UI code
- Zod schemas for runtime validation of forms and request bodies
- Prisma models with relations, @map names and native types
- Drizzle ORM tables using pgTable, mysqlTable or sqliteTable
- JSON Schema (draft-07) for OpenAPI documents and config validation
- Diagram — an entity-relationship view you can download as SVG
Drizzle in practice
The generated Drizzle file matches your dialect. Enums become pgEnum declarations, foreign keys become .references(() => users.id), defaults such as now() become .defaultNow(), and composite primary keys use the primaryKey({ columns: [...] }) helper.
export const users = pgTable("users", {
id: uuid("id").primaryKey().defaultRandom(),
email: varchar("email", { length: 255 }).notNull().unique(),
role: userRoleEnum("role").notNull().default("viewer"),
});
Review the output before committing it: custom check constraints, indexes and database-specific types may need a manual touch.
Read the diagram before you refactor
The Diagram tab draws each table with its columns, marks primary keys (PK) and foreign keys (FK), and connects related tables. It is the quickest way to spot an orphan table, a missing relation or a column that should be NOT NULL (marked with *).
Cleaning CSV exports
Exports from admin panels and spreadsheets are rarely clean. Open the file in the CSV Viewer & Editor:
- The delimiter (comma, semicolon, tab or pipe) is detected automatically
- Rename headers and edit any cell inline
- Insert, duplicate, move or delete rows and columns
- Sort naturally, so "item2" comes before "item10"
- Remove duplicate or empty rows and trim stray whitespace in one click
- Open a column's menu to see filled, empty, unique, sum, average, min and max values
- Undo and redo up to 50 steps
Export the shape you need
Search first if you only want some rows — the export follows your filter. Then copy or download as CSV, TSV, JSON (with numbers and booleans converted, leading zeros kept), a Markdown table for README files, or an HTML table for docs and emails.
Why local matters
Nothing in either tool leaves your device. There is no upload, no account and no server log of your schema or customer list. Close the tab and the data is gone.