SQLからSequelizeモデル変換

SQL CREATE TABLE文をDataTypesマッピング、アソシエーション、インデックス付きでSequelizeモデル定義に変換します。

このツールについて

SQLからSequelize変換ツールは、SQL CREATE TABLE文をSequelizeモデル定義に変換する無料のブラウザベースツールです。SequelizeはNode.jsで最も人気のORMで、PostgreSQL、MySQL、MariaDB、SQLite、Microsoft SQL Serverをサポートしています。Model.init()呼び出しを手動で書き、すべてのカラム型をDataTypes定数にマッピングする代わりに、このツールがプロセス全体を自動化し、クリーンで本番環境対応のSequelizeモデルを数秒で生成します。

変換ツールはSQLを解析し、カラム型をSequelizeのDataTypesにマッピングします。VARCHARINTEGERBOOLEANTIMESTAMPJSONなどの標準SQL型はすべて自動的に処理されます。PostgreSQLのSERIALJSONB、MySQLのAUTO_INCREMENTTINYINT(1)ブーリアンパターンなどのデータベース固有の型も認識し、DataTypes.UUIDDataTypes.JSONBDataTypes.DATEONLYなどの正しいSequelize定数にマッピングします。

リレーションはFOREIGN KEY制約やインラインのREFERENCES句から推論されます。ツールは正しいforeignKeytargetKeyオプションを持つbelongsToアソシエーションを生成し、コメント付きのhasMany逆方向アソシエーションのヒントも提供します。

TypeScriptJavaScriptの出力を切り替えられます。TypeScriptモードではAttributesCreationAttributesインターフェース、Model<>ジェネリクス、型付きクラスプロパティを含む完全な型安全コードを生成します。JavaScriptモードではCommonJSのrequire構文を生成します。

すべての処理はブラウザ内で完結します。SQL文がお使いの端末から外に出ることはなく、サーバーとのやり取り、ログ記録、サードパーティサービスの関与はありません。本番データベーススキーマでも安全に使用できます。他のORMをお使いの場合は、Prismaスキーマ生成用のSQLからPrisma変換ツールもお試しください。

使い方

  1. 左側のSQL Inputパネルに1つ以上のSQL CREATE TABLE文を貼り付けます。
  2. 入力しながら右パネルにSequelizeモデル出力が自動更新されます。
  3. TypeScriptJavaScriptを切り替えて、お好みの出力形式を選択します。
  4. TypeScriptモードでは型付きのModelクラス定義がAttributesCreationAttributesインターフェース付きで生成されます。
  5. JavaScriptモードではCommonJSスタイルのコードがrequiremodule.exports付きで生成されます。
  6. CopyをクリックするかCtrl+Shift+Cを押して、生成されたSequelizeコードをクリップボードにコピーします。
  7. Sampleで複数テーブルと外部キーリレーションを含むサンプルSQLを読み込めます。

人気のSQL→Sequelize変換例

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

よくある質問

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

パーサーは標準的なSQL CREATE TABLE構文をサポートし、PostgreSQL、MySQL、SQLite、SQL Serverのダイアレクト固有の機能を処理します。SERIAL / BIGSERIAL(PostgreSQL)、AUTO_INCREMENT(MySQL)、AUTOINCREMENT(SQLite)、IDENTITY(SQL Server)などに対応しています。生成されたSequelizeコードはSequelizeがサポートするすべてのデータベースで動作します。

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

一般的なマッピング例:VARCHARはDataTypes.STRINGに、INT/INTEGERはDataTypes.INTEGERに、BIGINTはDataTypes.BIGINTに、BOOLEANはDataTypes.BOOLEANに、DECIMAL/NUMERICはDataTypes.DECIMALに、TIMESTAMP/DATETIMEはDataTypes.DATEに、DATEはDataTypes.DATEONLYに、JSONはDataTypes.JSONに、JSONBはDataTypes.JSONBに、TEXTはDataTypes.TEXTに、UUIDはDataTypes.UUIDに、BLOB/BYTEAはDataTypes.BLOBに変換されます。VARCHAR(255)のような長さパラメータはDataTypes.STRING(255)として保持されます。

外部キーはどのようにSequelizeアソシエーションに変換されますか?

インラインのREFERENCES句とテーブルレベルのFOREIGN KEY制約の両方が検出されます。ツールはforeignKeyとtargetKeyオプション付きのbelongsToアソシエーションを生成し、コメント付きのhasMany逆方向アソシエーションのヒントも提供します。

TypeScriptとJavaScript出力の違いは何ですか?

TypeScript出力には完全な型定義が含まれます:全カラム用のAttributesインターフェース、オプショナルフィールド(オートインクリメント、nullable、デフォルト)用のCreationAttributes型、Model<Attributes, CreationAttributes>を拡張するクラス、型付きプロパティ。JavaScript出力は型アノテーションなしのCommonJS require/module.exports構文を使用します。

複合主キーとインデックスに対応していますか?

はい。PRIMARY KEY (col1, col2)で定義された複合主キーはSequelizeのindexesオプションにunique: trueのエントリとして変換されます。複合ユニーク制約はユニークインデックスエントリに、CREATE INDEX文は通常のインデックスエントリになります。複合主キーのすべてのカラムはallowNull: falseとしてマークされます。

データは安全ですか?

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

複数のテーブルを一度に変換できますか?

はい。セミコロンで区切った複数のCREATE TABLE文を貼り付けると、各テーブルに対してSequelizeモデルが生成されます。テーブル間の外部キーリレーションは自動的に検出され、アソシエーション宣言に変換されます。

関連ツール