DDL ファイル形式とは?
.ddl ファイルは、データベース構造を定義、変更、または削除する SQL のサブセットである データ定義言語(Data Definition Language)ステートメントを含むプレーンテキストの SQL スクリプトです。機能的には .sql ファイルと同じですが、慣習的に区別されています。.ddl 拡張子は、そのスクリプトがデータ操作ではなくスキーマ定義ステートメントを含んでいることを示します。主なステートメントには、CREATE TABLE、ALTER TABLE、DROP TABLE、CREATE INDEX、CREATE VIEW、および CONSTRAINT(制約)の定義が含まれます。
DDL は、DML(データ操作言語:INSERT、UPDATE、DELETE)や DQL(SELECT)とは区別されます。MySQL Workbench、DBeaver、SQL Server Management Studio など多くのツールがデータベーススキーマを .ddl ファイルとしてエクスポートでき、EclipseLink などの JPA/ORM フレームワークはエンティティマッピングから .ddl スクリプトを自動生成します。
このファイルにはバイナリシグネチャはなく、拡張子と内容によって識別されます。エンコーディングは UTF-8 または ASCII ですが、古い Windows ツールでは Windows-1252 が使用されることもあります。スクリプトは多くの場合、エクスポートツールによって生成されたコメントヘッダー(-- または /* */)で始まり、その後に一連の SQL ステートメントが続きます。
ファイルサイズは、単純なスキーマの数キロバイトから、大規模なエンタープライズデータベースのダンプでは数十メガバイトに及ぶこともあります。構文は DBMS 固有(MySQL、PostgreSQL、Oracle、SQL Server、SQLite はそれぞれ方言が異なります)であるため、.ddl ファイルは修正なしに異なるデータベースエンジン間で移植できるとは限りません。
セキュリティと安全性
リスク: LOW.ddl ファイルはプレーンテキストであり、それ自体が実行されることはありません。任意のテキストエディタで安全に開くことができます。リスクは「実行」することにあります。DDL ステートメント(特に DROP TABLE)はデータベース構造を変更または破壊します。実行前に必ず DDL スクリプトを確認し、バックアップがあることを確認し、意図したデータベースインスタンスに対してのみ実行してください。信頼できないソースからの DDL は、テーブルを削除したりバックドアアカウントを追加したりする可能性があるため、実行可能コードと同様に扱ってください。
形式の詳細
概要- SoftQuad / SGML DDL (Document Type Definition Link) - 歴史的な SGML 関連のスキーマ定義。現代ではほとんど使用されておらず、SQL とは無関係です。
- Oracle DDL エクスポート - Oracle Database ツール(SQL Developer、Data Pump)は、Oracle SQL 構文のスキーマ定義を .ddl ファイルとしてエクスポートします。概念は同じですが、Oracle 専用です。
DDL ファイルを開くプログラム
技術的詳細
詳細仕様| エンコーディング | プレーンテキスト - UTF-8(モダンなツール)、ASCII または Windows-1252(レガシースクリプト) |
| バイト順序 | 該当なし - テキストファイル |
| コンテナ | なし - 行区切りの SQL ステートメントを含む単一のフラットテキストファイル |
| マジックバイト | なし - 拡張子と SQL キーワード構造によって識別。バイナリシグネチャなし |
| 一般的なサイズ | 1 KB - 50 MB(単純なテーブルスクリプトは数 KB、大規模なエンタープライズスキーマダンプは数十 MB) |
| SQL サブセット | DDL - CREATE、ALTER、DROP、TRUNCATE、RENAME、および CONSTRAINT の定義。データではなくスキーマ構造のみ |
| 方言依存性 | 構文は DBMS(MySQL、PostgreSQL、Oracle、SQL Server、SQLite)によって異なります。スクリプトは修正なしにエンジン間で移植できるとは限りません |
| 標準規格 | DDL は ANSI SQL-86 (ISO/IEC 9075:1987) で標準化。現在の標準は SQL:2023 (ISO/IEC 9075:2023) |
| ORM 統合 | EclipseLink、Hibernate、およびその他の JPA フレームワークは、エンティティクラスのマッピングから .ddl スクリプトを自動生成可能 |
| コメントの慣習 | ツールで生成されたファイルヘッダーは --(単一行)または /* */(ブロック)SQL コメントを使用。インラインコメントも同じ慣習に従う |
| エクスポートのサポート | MySQL Workbench、DBeaver、pgAdmin、SSMS、Oracle SQL Developer はデータベーススキーマを直接 .ddl スクリプトとしてエクスポート可能 |
| インポートワークフロー | コマンドラインクライアント(mysql、psql、sqlcmd、sqlite3)または GUI ツールを使用して対象データベースに対して実行。ステートメントは順次実行される |
| .sql との関係 | 機能的には同一。開発者の慣習により、.ddl はスキーマのみの内容(データ操作なし)であることを示す |
| 移植性 | 方言固有の修正なしには、DBMS エンジン間での移植性は保証されない |
| リリース日 | SQL DDL concepts introduced with SQL-86 (ISO/IEC 9075:1987); .ddl extension is a convention, not a standard |
| 最新バージョン | SQL:2023 (ISO/IEC 9075:2023) |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | www.iso.org |
DDL の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。DDL ファイルについて最初の質問をしてみましょう。