PrismaからSQLスキーマ変換
Prismaスキーマのmodel定義を型マッピング、外部キー、インデックス付きでSQL CREATE TABLE文に変換します。
このツールについて
PrismaからSQL変換ツールは、Prismaスキーマのmodel定義をSQL CREATE TABLE文に変換する無料のブラウザベースツールです。PrismaはNode.jsとTypeScript向けの広く使われている型安全なORMで、その宣言的なスキーマ言語によりデータモデリングが直感的に行えます。しかし、データベースマイグレーション、ドキュメント作成、Prismaを使用しないチームとの作業時にSQLが必要な場合、このツールが即座にギャップを埋めます。
変換ツールはPrismaのmodelブロックを解析し、各フィールド型を選択したダイアレクトに適切なSQLカラム型にマッピングします。String、Int、Float、Boolean、DateTime、Json、BigInt、Decimal、BytesなどのPrisma型はすべて正確にマッピングされます。@id(主キー)、@default(autoincrement())(serial / auto-increment)、@unique、@map(カラムのリネーム)、@@map(テーブルのリネーム)に対応しています。逆方向の変換が必要な場合は、SQLからPrisma変換ツールをご利用ください。
@relationで定義されたリレーションは、正しいカラムとテーブル参照を持つFOREIGN KEY制約に変換されます。@@idからの複合キーは複合PRIMARY KEY句に、@@uniqueは複合UNIQUE制約に、@@indexはCREATE INDEX文になります。Prismaのenum定義は、PostgreSQLではCREATE TYPE ... AS ENUMに、MySQLではインラインのENUM(...)に変換されます。
すべての処理はブラウザ内で完結します。スキーマがお使いの端末から外に出ることはなく、サーバーリクエスト、ログ記録、サードパーティサービスの関与はありません。本番スキーマや機密性の高いmodel定義でも安全に使用できます。PostgreSQL、MySQL、SQLiteダイアレクトをサポートし、ダイアレクト固有の構文差異は自動的に処理されます。
関連する変換ツールとして、JSONデータからINSERT文を生成するJSON to SQLや、JSONオブジェクトからテーブル構造を推論するJSON to SQL Schemaもご覧ください。
使い方
- 左側のPrisma Schema InputパネルにPrismaスキーマの
modelとenum定義を貼り付けます。 - 入力しながら右パネルにSQL出力が自動更新されます。
- ダイアレクト固有の構文を得るために、ターゲットのSQL Dialect(PostgreSQL、MySQL、SQLite)を選択します。
- Sampleをクリックして、モデル、リレーション、Enum、インデックスを含むサンプルPrismaスキーマを読み込みます。
- 出力の
CREATE TABLE、CREATE TYPE、CREATE INDEX文を確認します。 - CopyをクリックするかCtrl+Shift+Cを押して、生成されたSQLをクリップボードにコピーします。
- Clearをクリックして両パネルをリセットし、最初からやり直します。
人気の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制約に変換されます。
関連ツール
SQL → Prismaスキーマ変換
SQL CREATE TABLE文をPrismaスキーマモデルに変換します。一般的なSQL型とリレーションに対応。
SQLフォーマッター
MySQL、PostgreSQL、SQLite対応でSQLクエリの整形、美化、圧縮を行います。
JSON → SQLスキーマ変換
JSONからCREATE TABLE文を生成。MySQL、PostgreSQL、SQLite対応で自動型推論付き。
SQL → Sequelizeモデル変換
SQL CREATE TABLE文をSequelizeモデル定義に変換します。DataTypesマッピングとアソシエーション対応。
SQL → Drizzleスキーマ変換
SQL CREATE TABLE文をDrizzle ORMスキーマ定義に変換します。型安全なカラムビルダー付き。
JSON → SQL INSERT変換
JSON配列をSQL INSERT文に変換。一括挿入、テーブル名カスタマイズ、複数SQLダイアレクト対応。