SQLite
SQLite でデータベースとテーブルのスキーマをエクスポートする方法
はじめに
リレーショナルデータベースでは、データベーススキーマは、データベースの構造と、テーブル、フィールド、インデックスなどの構成要素を定義します。この情報を抽出およびエクスポートすることは、バックアップ、新しい環境への移行、データ構造の可視化、およびコードベース内でのこれらの構造の管理など、多くのシナリオで役立ちます。
この短いガイドでは、sqlite3
コマンドを使用して SQLite データベーススキーマをエクスポートする方法について説明します。データベースの管理に使用できるのと同じコマンドを使用して、データベースのデータと構造をエクスポートできます。このガイドでは、データ構造自体を抽出することに焦点を当てます。
JavaScript または TypeScript アプリケーション内から PostgreSQL データベースを管理するには、Prisma Client を使用できます。SQLite で Prisma を使用する方法については、Prisma の SQLite データベースコネクターページをご覧ください。
基本的な使い方
SQLite からデータベーススキーマをエクスポートするために必要な基本的なコマンドは次のとおりです。
sqlite3 DATABASE_FILE.sqlite '.schema' > schema.sql
ここで、DATABASE_FILE.sqlite
は、データと構造を含む SQLite データベースファイルです。'.schema'
コンポーネントは、SQLite にデータベーススキーマをデータなしでエクスポートするように指示するコマンドです。schema.sql
ファイルは、エクスポートされたデータベース構造を受け取るターゲットファイルです。
インタラクティブに実行する
上記のコマンドは、コマンドラインから実行できます。この同じ手順を sqlite3
シェル内でインタラクティブに実行できます。
まず、sqlite3
コマンドで SQLite データベースファイルを開きます。
sqlite DATABASE_FILE.sqlite
次に、コマンド結果が表示される代わりにファイルに送信されるように出力を設定します。
.output schema.sql
最後に、次のように入力してスキーマを出力します。
.schema
オプションで、次のように入力して出力を標準出力に戻すことができます。
.output
ガイドの残りの部分では、追加機能を実証するためにコマンドラインを使用しますが、必要に応じてこの方法を使用してインタラクティブに複製できることに注意してください。
特定のデータベースのスキーマをエクスポートする
特定のデータベースに関連するスキーマのみをエクスポートするには、次の構文を使用して、データベースに属するすべてのコンポーネントをワイルドカードで選択できます。
sqlite3 DATABASE_FILE.sqlite '.schema DATABASE.*' > database_schema.sql
たとえば、sales.sql
という名前のデータベースファイルがあり、VENDORS
データベースのみをエクスポートする場合は、次のように入力できます。
sqlite3 sales.sqlite '.schema VENDORS.*' > vendors_db_schema.sql
特定のテーブルをエクスポートする
.schema
の後にテーブル名を含めることで、特定のテーブルをエクスポートすることもできます。
sqlite3 DATABASE_FILE.sqlite '.schema TABLE' > table_schema.sql
このアプローチの代替案は、特定の名前に代えてワイルドカード一致を使用することです。schema
コマンドは、これに LIKE パターンマッチング を使用します。これは、パーセント文字 (%
) が 0 個以上の文字に一致するために使用され、アンダースコア (_
) が正確に 1 文字を表すことができることを意味します。
たとえば、inventory
で始まるすべてのテーブルをエクスポートするには、次のように入力できます。
sqlite3 DATABASE_FILE.sqlite '.schema inventory%' > inventory_schemas.sql
この構文では、複数のパターンまたは複数の特定のテーブルを一度に指定することはできません。そのため、必要なオブジェクトをエクスポートするために複数のコマンドを実行するか、すべてをダンプしてエクスポートされたスキーマを手動で操作する必要がある場合があります。
スキーマダンプにデータベース統計を含める
クエリプランなどを決定するために SQLite が内部的に使用するすべての統計テーブルを含めるには、.schema
コマンドの代わりに .fullschema
コマンドを使用できます。これは、クエリが特定の方法で実行された理由をデバッグしようとする場合に役立つ情報となる可能性があります。
sqlite3 DATABASE_FILE.sqlite '.fullschema' > schema_with_statistics.sql
.fullschema
コマンドでは、テーブル名でフィルタリングすることはできません。
結論
スキーマをエクスポートできることで、データベース構造をデータベース自体の外部に保存できます。これは、新しい環境をセットアップしたり、ニーズの変化に合わせてスキーマを進化させたり、保存している情報の構造を視覚化したりするのに役立ちます。
JavaScript または TypeScript アプリケーション内から PostgreSQL データベースを管理するには、Prisma Client を使用できます。SQLite で Prisma を使用する方法については、Prisma の SQLite データベースコネクターページをご覧ください。