SQL to Prisma

SQL DDL zu Prisma Schema Konverter (Modelle, Relationen & Enums) Entwicklerhandbuch

Konvertieren Sie SQL CREATE TABLE DDL-Anweisungen in saubere Prisma ORM-Modelle, Relationen, Feldattribute und Enums.

Presets:
Datenbank-Provider:
SQL DDL Eingabe(5 tables)
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

enum OrderStatus {
  PENDING
  PROCESSING
  PAID
  SHIPPED
  DELIVERED
  CANCELLED
}

enum UserRole {
  ADMIN
  CUSTOMER
  MERCHANT
}

model User {
  id           String        @id @default(uuid()) @db.Uuid
  email        String        @unique @db.VarChar(255)
  fullName     String?       @map("full_name") @db.VarChar(150)
  role         UserRole      @default("CUSTOMER")
  isVerified   Boolean       @default(false) @map("is_verified")
  metadata     Json?
  createdAt    DateTime      @default(now()) @map("created_at") @db.Timestamptz
  updatedAt    DateTime      @default(now()) @updatedAt @map("updated_at") @db.Timestamptz
  userProfile  UserProfile?
  orders       Order[]

  @@map("users")
}

model UserProfile {
  id               String   @id @default(uuid()) @db.Uuid
  userId           String   @unique @map("user_id") @db.Uuid
  avatarUrl        String?  @map("avatar_url") @db.VarChar(500)
  phoneNumber      String?  @map("phone_number") @db.VarChar(32)
  shippingAddress  String?  @map("shipping_address") @db.Text
  taxIdentifier    String?  @map("tax_identifier") @db.VarChar(64)
  user             User     @relation(fields: [userId], references: [id], onDelete: Cascade)

  @@map("user_profiles")
}

model Product {
  id              Int          @id @default(autoincrement())
  sku             String       @unique @db.VarChar(64)
  title           String       @db.VarChar(200)
  description     String?      @db.Text
  unitPrice       Decimal      @default(0.00) @map("unit_price") @db.Decimal(12, 2)
  inventoryCount  Int          @default(0) @map("inventory_count")
  isActive        Boolean      @default(true) @map("is_active")
  createdAt       DateTime     @default(now()) @map("created_at") @db.Timestamptz
  orderItems      OrderItem[]

  @@index([sku])
  @@map("products")
}

model Order {
  id             String       @id @default(uuid()) @db.Uuid
  customerId     String       @map("customer_id") @db.Uuid
  orderNumber    String       @unique @map("order_number") @db.VarChar(64)
  status         OrderStatus  @default("PENDING")
  totalAmount    Decimal      @default(0.00) @map("total_amount") @db.Decimal(12, 2)
  taxAmount      Decimal      @default(0.00) @map("tax_amount") @db.Decimal(10, 2)
  shippingNotes  String?      @map("shipping_notes") @db.Text
  createdAt      DateTime     @default(now()) @map("created_at") @db.Timestamptz
  updatedAt      DateTime     @default(now()) @updatedAt @map("updated_at") @db.Timestamptz
  customer       User         @relation(fields: [customerId], references: [id], onDelete: Restrict)
  orderItems     OrderItem[]

  @@index([status])
  @@map("orders")
}

model OrderItem {
  id         Int      @id @default(autoincrement())
  orderId    String   @map("order_id") @db.Uuid
  productId  Int      @map("product_id")
  quantity   Int      @default(1)
  unitPrice  Decimal  @map("unit_price") @db.Decimal(12, 2)
  subtotal   Decimal  @db.Decimal(12, 2)
  order      Order    @relation(fields: [orderId], references: [id], onDelete: Cascade)
  product    Product  @relation(fields: [productId], references: [id], onDelete: Restrict)

  @@unique([orderId, productId])
  @@map("order_items")
}
Erkannte Modelle5 models generated
Ermittelte Relationen4 foreign keys resolved
Erkannte Enums2 typed enums

100% Client-seitige Privatsphäre

Keine Server-Uploads oder Datenbankverbindungen. Das Parsen von SQL DDL und die Generierung des Prisma-Schemas erfolgen vollständig lokal im Browser.

Intelligente Beziehungs- und Schlüsselauflösung

Löst Fremdschlüssel automatisch in typisierte Prisma @relation-Direktiven, bidirektionale Referenzen und @@id / @@unique-Einschränkungen auf.

Multi-Dialekt DDL-Engine

Unterstützt PostgreSQL, MySQL, SQLite und SQL Server inklusive SERIAL, UUID-Standards, nativer Datentypen, Indizes und benutzerdefinierter Enums.

Technische Referenz & Architektur-Leitfaden

SQL DDL zu Prisma Schema Konverter (Modelle, Relationen & Enums) Entwicklerhandbuch — Referenz-Leitfaden

Konvertieren Sie SQL CREATE TABLE DDL-Anweisungen in saubere Prisma ORM-Modelle, Relationen, Feldattribute und Enums.

Wichtige Parameter & Steuerelemente

SQL-Dialekt (SQL Dialect)Enum (PostgreSQL | MySQL | SQLite | SQL Server | CockroachDB)

Ziel-SQL-Dialekt zum Parsen von Tabellendefinitionen, dialektspezifischen Datentypen (wie SERIAL, VARCHAR, DATETIME2, JSONB) und DEFAULT-Einschränkungsklauseln.

Standard: PostgreSQL
Namenskonvention (Naming & Case Convention)Enum (camelCase/PascalCase mit @map | Ursprüngliche Bezeichner beibehalten)

Wandelt snake_case-Tabellen und -Spalten automatisch in idiomatische Prisma PascalCase-Modelle und camelCase-Felder um, während @@map- und @map-Direktiven hinzugefügt werden, um die vollständige Datenbankkompatibilität zu wahren.

Standard: camelCase & PascalCase with @map
Relationen-Generierungsmodus (Relation Mode)Enum (Bidirektionale @relation | Reine Fremdschlüsselfelder)

Legt fest, ob Fremdschlüsselbeschränkungen bidirektionale Prisma-Objektrelationen mit expliziten fields- und references-Arrays erzeugen oder nur Skalarfelder für Fremdschlüssel beibehalten werden.

Standard: Bidirektionale @relation
Enum-Strategie (Enum Strategy)Enum (Top-Level Prisma Enum | String mit Dokumentation)

Bestimmt, ob benutzerdefinierte PostgreSQL-Enum-Typen und MySQL-Spalten-ENUMs in eigenständige Prisma-Enum-Blöcke extrahiert oder als String-Skalare abgebildet werden.

Standard: Top-Level Prisma Enum

Profi-Tipps & Best Practices

Datenbankkompatibilität durch @@map und @map nahtlos bewahren

Aktivieren Sie das Mapping auf camelCase und PascalCase, damit Ihr generierter TypeScript-Prisma-Client den JavaScript-Standards entspricht, während @@map('tabellen_name') und @map('spalten_name') bestehende SQL-Tabellen unangetastet lassen.

Mehrdeutige Fremdschlüssel zwischen denselben Tabellen explizit benennen

Wenn eine Tabelle mehrere Fremdschlüssel auf dasselbe Ziel besitzt (z. B. author_id und reviewer_id verweisen auf users), vergeben Sie eindeutige Relationsnamen wie @relation('PostAuthor', fields: [authorId], references: [id]), um Validierungsfehler P1012 zu vermeiden.

Zusammengesetzte Primärschlüssel und Indizes auf @@id und @@unique abbilden

Stellen Sie sicher, dass zusammengesetzte Primärschlüssel wie PRIMARY KEY (user_id, organization_id) in @@id([userId, organizationId]) und mehrspaltige Indizes in @@index([fieldA, fieldB]) überführt werden.

Häufige Fallstricke & Fehlerbehebung

Prisma Schema-Validierungsfehler P1012: 'Relationsfeld kann nicht geparst werden oder Gegenfeld fehlt'

Prisma erfordert bei Objektrelationen passende Gegenfelder in beiden beteiligten Modellen. Stellen Sie sicher, dass alle referenzierten CREATE TABLE-Anweisungen in der DDL-Eingabe enthalten sind, damit der Parser bidirektionale Beziehungen auflösen kann.

Nicht unterstützte oder dialektspezifische Spaltentypen (z. B. GEOMETRY, TSVECTOR)

Prisma unterstützt die Syntax Unsupported('typname') für herstellerspezifische Datentypen, die keine direkte Entsprechung in standardmäßigen Prisma-Skalaren haben. Markieren Sie solche Felder mit Unsupported oder mappen Sie sie manuell auf Bytes/String.

Häufig gestellte Fragen (FAQ)

Wie werden SQL-Fremdschlüssel in Prisma-Relationen umgewandelt?▼

Wenn der Parser eine FOREIGN KEY (author_id) REFERENCES users(id)-Klausel erkennt, generiert er sowohl das Skalarfeld (authorId Int @map('author_id')) als auch das Relationsfeld (author User @relation(fields: [authorId], references: [id])) und fügt dem Zielmodell User das Gegenfeld (posts Post[]) hinzu.

Worin liegt der Unterschied zwischen diesem Konverter und dem Befehl `prisma db pull`?▼

`prisma db pull` erfordert eine aktive Netzwerkverbindung und Zugangsdaten zu einer laufenden Datenbankinstanz. Dieser browserbasierte Konverter arbeitet rein clientseitig ohne Server-Upload und wandelt statische DDL-Dateien direkt um.

Wie werden zusammengesetzte Primärschlüssel und mehrspaltige Indizes abgebildet?▼

Zusammengesetzte Primärschlüssel PRIMARY KEY (col1, col2) werden zu Modell-Attributen @@id([col1, col2]), Unique-Constraints zu @@unique([col1, col2]) und Sekundärindizes zu @@index([col1, col2]).

Werden SQL-DEFAULT-Werte und Autoincrement-Sequenzen unterstützt?▼

Ja. AUTO_INCREMENT (MySQL) und SERIAL / IDENTITY (PostgreSQL/SQL Server) werden zu @default(autoincrement()) konvertiert, DEFAULT CURRENT_TIMESTAMP zu @default(now()), und statische Standardwerte werden in entsprechende Prisma @default(...)-Attribute überführt.

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →
Docker Run zu Docker Compose Konverter (CLI zu YAML) Entwickler-Handbuchdeveloper

Konvertieren Sie docker run CLI-Befehlszeilenflags, Volume-Mounts, Port-Bindungen und Umgebungsvariablen in saubere, produktionsbereite docker-compose.yml Services.

Werkzeug öffnen→
Entwicklerhandbuch für Nginx-Upstream- & Load-Balancing-Konfigurationsgeneratordeveloper

Erstellen Sie produktionsbereite Nginx-Upstream-Blöcke mit Round-Robin, least_conn, ip_hash, Keepalive und passiven Health-Checks.

Werkzeug öffnen→
Cron zu Kubernetes CronJob YAML-Konverter & Spezifikations-Generator Entwicklerhandbuchdeveloper

Konvertieren Sie Standard-Crontab-Ausdrücke in produktionsreife Kubernetes CronJob-Manifeste mit deklarativer restartPolicy, concurrencyPolicy, Ressourcenlimits und Zeitzonenunterstützung.

Werkzeug öffnen→
JSON zu GraphQL SDL Schema-Generator (Types, Queries & Inputs) Entwicklerhandbuchdeveloper

Generieren Sie GraphQL Schema Definition Language (SDL) Objekttypen, Eingabetypen (Input) und Abfrageschemata direkt aus JSON-Objekten.

Werkzeug öffnen→
Prometheus Alerting- & Recording-Rule-Generator (PromQL) Entwicklerhandbuchdeveloper

Erstellen und validieren Sie PromQL-Alerting-Regeln, Recording-Regeln, Schwellenwerte, Labels und Runbook-Annotationen visuell.

Werkzeug öffnen→
GraphQL SDL zu TypeScript Resolver-Typen Generator Entwicklerhandbuchdeveloper

Generieren Sie typsichere TypeScript-Resolver-Interfaces, Query-/Mutation-Argumente und Parent-Kontexttypen aus GraphQL SDL.

Werkzeug öffnen→