SQL DDL→Prisma変換

SQLのCREATE TABLE文(DDL)を解析し、schema.prismaのモデル定義に変換するツールです。PostgreSQL・MySQL・SQLiteの主な型、主キー・一意制約・インデックス、外部キーからのリレーション、ENUM型に対応し、すべてブラウザ内で処理されます。

入力したSQLはブラウザ内のみで処理され、外部サーバーへ送信されることはありません。データベースのスキーマ情報も安全に扱えます。
変換オプション
データベース(datasource provider)

使い方

  1. 左側にCREATE TABLE文を貼り付けるか、「ファイルを開く」やドラッグ&ドロップで .sql ファイル(pg_dumpやmysqldumpの出力など)を読み込みます。
  2. 「変換オプション」で、データベースの種類、Prismaの命名規則への変換、ネイティブ型属性の出力、generator・datasourceブロックの出力を選びます。
  3. 右側にschema.prismaのモデル定義が表示されます。外部キーからはリレーションフィールドと逆方向のリレーションが自動で生成されます。
  4. 警告が表示された場合は内容を確認し、「クリップボードへコピー」または「schema.prisma をダウンロード」で保存します。

このツールについて

既存のデータベースにPrismaを導入する場合、通常は prisma db pull でデータベースに接続してスキーマを取り込みます。しかし、手元にDDLのファイルしかない場合や、本番データベースに接続できない場合、設計段階のテーブル定義からモデルを作りたい場合などもあります。このツールは、CREATE TABLE文だけからschema.prismaのモデル定義を作成します。

カラムの型はPrismaの型(String・Int・BigInt・Decimal・DateTime・Json など)に対応付け、VARCHAR(255) のような長さの指定は @db.VarChar(255) として保持します。PRIMARY KEY は @id / @@id、UNIQUE は @unique / @@unique、CREATE INDEX は @@index、SERIAL や AUTO_INCREMENT は @default(autoincrement())、DEFAULT now() は @default(now()) に変換します。外部キーからは関連するモデル同士のリレーションを生成し、ON DELETE の指定も引き継ぎます。

SQLの解析はブラウザ内の独自パーサーで行っており、入力したテーブル定義がサーバーへ送信されることはありません。ビューやトリガー、関数などのCREATE TABLE以外の文は読み飛ばします。変換結果は prisma validate や prisma format で確認してから利用することをおすすめします。

よくある質問

どのデータベースのDDLに対応していますか?

PostgreSQL・MySQL(MariaDB)・SQLiteでよく使われるCREATE TABLEの構文に対応しています。pg_dumpのようにALTER TABLEで後から追加された主キーや外部キーも反映します。

変換できない型はどうなりますか?

PostGISのgeometryのようにPrismaに対応する型がないものは Unsupported("型名") として出力し、警告を表示します。Prismaでは Unsupported 型のカラムはPrisma Clientから読み書きできない点にご注意ください。

リレーションフィールドの名前はどのように決まりますか?

外部キーのカラム名から「_id」を除いた名前(author_id → author)を使います。同じテーブル同士に複数のリレーションがある場合や自己参照の場合は、@relation に名前を付けて区別します。

入力したSQLはサーバーに送信されますか?

送信されません。SQLの解析とschema.prismaの生成はすべてブラウザ内で行われます。