SQLite
SQLite でデータベースおよびテーブルスキーマをエクスポートする方法
はじめに
リレーショナルデータベースでは、データベーススキーマはデータベースとその構成要素(テーブル、フィールド、インデックスなど)の構造を定義します。この情報を抽出およびエクスポートすることは、バックアップ、新しい環境への移行、データ構造の視覚化、コードベース内でのこれらの構造の管理など、多くのシナリオで役立ちます。
この短いガイドでは、sqlite3コマンドを使用してSQLiteデータベーススキーマをエクスポートする方法について説明します。データベースを管理するために使用できるのと同じコマンドを、データベースのデータと構造をエクスポートするために使用できます。このガイドでは、データ構造自体を抽出することに焦点を当てます。
JavaScriptまたはTypeScriptアプリケーション内からPostgreSQLデータベースを管理するには、Prisma Clientを使用できます。PrismaをSQLiteで使用する方法を学ぶには、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
この構文では、一度に複数のパターンや複数の特定のテーブルを指定することはできません。そのため、必要なオブジェクトをエクスポートするために複数のコマンドを実行するか、すべてをダンプしてエクスポートされたスキーマを手動で操作する必要がある場合があります。
スキーマダンプにデータベース統計を含める
.schemaコマンドの代わりに.fullschemaコマンドを使用すると、SQLiteがクエリプランなどを決定するために内部的に使用するすべての統計テーブルも含まれます。これは、クエリが特定の方法で実行された理由をデバッグしようとするときに役立つ情報です。
sqlite3 DATABASE_FILE.sqlite '.fullschema' > schema_with_statistics.sql
.fullschemaコマンドではテーブル名によるフィルタリングはできない点に注意してください。
まとめ
スキーマをエクスポートできると、データベース構造をデータベース自体とは別に保存できます。これは、新しい環境をセットアップしたり、ニーズの変化に合わせてスキーマを進化させたり、保存している情報の構造を視覚化したりする際に役立ちます。
JavaScriptまたはTypeScriptアプリケーション内からPostgreSQLデータベースを管理するには、Prisma Clientを使用できます。PrismaをSQLiteで使用する方法を学ぶには、PrismaのSQLiteデータベースコネクタページをご覧ください。
