PrismaからSQLスキーマ変換

Prismaスキーマのmodel定義を型マッピング、外部キー、インデックス付きでSQL CREATE TABLE文に変換します。

このツールについて

PrismaからSQL変換ツールは、Prismaスキーマのmodel定義をSQL CREATE TABLE文に変換する無料のブラウザベースツールです。PrismaはNode.jsとTypeScript向けの広く使われている型安全なORMで、その宣言的なスキーマ言語によりデータモデリングが直感的に行えます。しかし、データベースマイグレーション、ドキュメント作成、Prismaを使用しないチームとの作業時にSQLが必要な場合、このツールが即座にギャップを埋めます。

変換ツールはPrismaのmodelブロックを解析し、各フィールド型を選択したダイアレクトに適切なSQLカラム型にマッピングします。StringIntFloatBooleanDateTimeJsonBigIntDecimalBytesなどのPrisma型はすべて正確にマッピングされます。@id(主キー)、@default(autoincrement())(serial / auto-increment)、@unique@map(カラムのリネーム)、@@map(テーブルのリネーム)に対応しています。逆方向の変換が必要な場合は、SQLからPrisma変換ツールをご利用ください。

@relationで定義されたリレーションは、正しいカラムとテーブル参照を持つFOREIGN KEY制約に変換されます。@@idからの複合キーは複合PRIMARY KEY句に、@@uniqueは複合UNIQUE制約に、@@indexCREATE INDEX文になります。Prismaのenum定義は、PostgreSQLではCREATE TYPE ... AS ENUMに、MySQLではインラインのENUM(...)に変換されます。

すべての処理はブラウザ内で完結します。スキーマがお使いの端末から外に出ることはなく、サーバーリクエスト、ログ記録、サードパーティサービスの関与はありません。本番スキーマや機密性の高いmodel定義でも安全に使用できます。PostgreSQL、MySQL、SQLiteダイアレクトをサポートし、ダイアレクト固有の構文差異は自動的に処理されます。

関連する変換ツールとして、JSONデータからINSERT文を生成するJSON to SQLや、JSONオブジェクトからテーブル構造を推論するJSON to SQL Schemaもご覧ください。

使い方

  1. 左側のPrisma Schema InputパネルにPrismaスキーマのmodelenum定義を貼り付けます。
  2. 入力しながら右パネルにSQL出力が自動更新されます。
  3. ダイアレクト固有の構文を得るために、ターゲットのSQL Dialect(PostgreSQL、MySQL、SQLite)を選択します。
  4. Sampleをクリックして、モデル、リレーション、Enum、インデックスを含むサンプルPrismaスキーマを読み込みます。
  5. 出力のCREATE TABLECREATE TYPECREATE INDEX文を確認します。
  6. CopyをクリックするかCtrl+Shift+Cを押して、生成されたSQLをクリップボードにコピーします。
  7. Clearをクリックして両パネルをリセットし、最初からやり直します。

人気のPrisma→SQL変換例

すべてのPrisma→SQL変換例を見る →

よくある質問

どのSQLダイアレクトに対応していますか?

PostgreSQL、MySQL、SQLiteに対応しています。各ダイアレクトでターゲットデータベースに正しい構文を生成します。例えば、PostgreSQLではオートインクリメントにSERIAL、enumにCREATE TYPEを使用し、MySQLではAUTO_INCREMENTとインラインENUM()を使用し、SQLiteではINTEGER PRIMARY KEY AUTOINCREMENTを使用します。

Prisma型はどのようにSQL型にマッピングされますか?

一般的なマッピング例:StringはVARCHAR(255)に、IntはINTEGERに、BigIntはBIGINTに、FloatはDOUBLE PRECISION(PostgreSQL)またはDOUBLE(MySQL)に、DecimalはDECIMAL(10,2)に、BooleanはBOOLEANに、DateTimeはTIMESTAMP(PostgreSQL/SQLite)またはDATETIME(MySQL)に、JsonはJSONB(PostgreSQL)またはJSON(MySQL)に、BytesはBYTEA(PostgreSQL)、LONGBLOB(MySQL)、BLOB(SQLite)に変換されます。

Prismaリレーションはどのようにに変換されますか?

@relation(fields: [...], references: [...])を持つフィールドはFOREIGN KEY制約に変換されます。ツールはローカルフィールド名と参照モデルのフィールド名を読み取り、SQLカラム名にマッピングし(@mapアノテーションも考慮)、FOREIGN KEY (local_col) REFERENCES ref_table (ref_col)制約を生成します。

Prisma Enumはどのように処理されますか?

Prismaのenumブロックは、PostgreSQLではCREATE TYPE ... AS ENUM (...)文に変換されます。MySQLでは、enum値はインラインのENUM(...)カラム型として使用されます。SQLiteにはネイティブのenumサポートがないため、CHECK制約付きのTEXTカラムが生成されます。

@mapと@@mapアノテーションは処理されますか?

はい。フィールドに@map("column_name")がある場合、指定された名前がSQLカラム名として使用されます。モデルに@@map("table_name")がある場合、その名前がSQLテーブル名として使用されます。マッピングが指定されていない場合、PascalCaseのモデル名をsnake_caseのテーブル名に、camelCaseのフィールド名をsnake_caseのカラム名に変換します。

データは安全ですか?

はい。すべての解析とSQL生成はJavaScriptを使用してブラウザ内で完全に実行されます。データがサーバーに送信されることはありません。ツール使用中にブラウザの開発者ツールのネットワークタブで確認できます。

複数のモデルを一度に変換できますか?

はい。複数のmodelとenum定義を含むPrismaスキーマ全体を貼り付けると、各モデルに対してCREATE TABLE文が、各enumに対してCREATE TYPE / ENUMが生成されます。モデル間のリレーションは、正しいクロステーブル参照を持つFOREIGN KEY制約に変換されます。

関連ツール