erd.sketch

SQL 转 Prisma:从 DDL 脚本生成模型

下面不是示意图:这是生成器对左边脚本的真实输出。在编辑器里点「Codegen → Prisma」得到的就是同一份代码。

输入schema.sql
CREATE TABLE users (
    id BIGINT NOT NULL PRIMARY KEY,
    email       VARCHAR(255) NOT NULL UNIQUE,
    full_name   VARCHAR(120),
    is_active   BOOLEAN NOT NULL,
    created_at  TIMESTAMP NOT NULL
);

CREATE TABLE orders (
    id BIGINT NOT NULL PRIMARY KEY,
    user_id     BIGINT NOT NULL REFERENCES users(id),
    total       DECIMAL(12,2) NOT NULL,
    note        TEXT,
    placed_at   TIMESTAMP NOT NULL
);
输出schema.prisma
model Users {
  id         BigInt      @id
  email      String      @db.VarChar(255) @unique
  fullName   String?     @db.VarChar(120) @map("full_name")
  isActive   Boolean     @map("is_active")
  createdAt  DateTime    @map("created_at")

  orders     Orders[]

  @@map("users")
}

model Orders {
  id        BigInt      @id
  userId    BigInt      @map("user_id")
  total     Decimal     @db.Decimal(12, 2)
  note      String?     @db.Text
  placedAt  DateTime    @map("placed_at")

  users     Users       @relation(fields: [userId], references: [id])

  @@map("orders")
}
打开编辑器

脚本留在浏览器里:解析和生成都在您的机器上进行,不会上传到服务器。

类型如何对应

在 SQL 里在模型里
BIGINTBigInt
VARCHAR(255)String @db.VarChar(255)
BOOLEANBoolean
TIMESTAMPDateTime
DECIMAL(12,2)Decimal @db.Decimal(12, 2)
TEXTString? @db.Text
可空字段
String?
列名
@map("full_name")
关系
@relation(fields: [userId], references: [id])