この記事には、SQLiteの既存のテーブルからSQLスクリプトを生成する3つの方法が含まれています。
3つのメソッドすべてがCREATE TABLE
を生成します スクリプトですが、最後のメソッドでもINSERT
が生成されます データを挿入するためのステートメント。
.schemaコマンド
テーブル構造のみをスクリプト化する場合(つまり、データなし)は、.schema
を使用できます。 指図。
これを行うには、.schema
を使用するだけです。 スクリプト化するテーブルの名前が続きます。
次に例を示します:
.schema Genre
結果:
CREATE TABLE [Genre] ( [GenreId] INTEGER NOT NULL, [Name] NVARCHAR(120), CONSTRAINT [PK_Genre] PRIMARY KEY ([GenreId]) );
この場合、Genre
のスクリプトを作成しました テーブル。
.schema
でパターンマッチングを使用することもできます 指図。
たとえば、次のコマンドは前のコマンドと同じ結果を返します。
.schema Gen%
.schema
を使用することもできます データベース全体をスクリプト化するコマンド。これを行うには、引数なしでコマンドを使用するだけです。このように:
.schema
デフォルトでは、.schema
は、接続されているすべてのデータベースのスキーマを示しています。単一のデータベースのスキーマのみを表示する場合は、引数を追加して、関心のあるデータベースを指定できます。
例:
.schema main.*
sqlite_masterテーブル
.schema
の代替 sqlite_masterに直接クエリを実行することです テーブル。このテーブルには、 sqlという列が含まれています 、テーブルの作成に使用されるSQLが含まれています。
次に例を示します:
SELECT sql FROM sqlite_master WHERE tbl_name = 'Genre';
結果:
CREATE TABLE [Genre] ( [GenreId] INTEGER NOT NULL, [Name] NVARCHAR(120), CONSTRAINT [PK_Genre] PRIMARY KEY ([GenreId]) )
テーブルデータを含める
すべてのデータが必要な場合は、.dump
を使用してください 指図。このコマンドは、CREATE TABLE
のスクリプトを作成します ステートメントとINSERT
すべてのデータをテーブルに挿入するためのステートメント。
次に例を示します:
.dump Genre
結果:
PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE [Genre] ( [GenreId] INTEGER NOT NULL, [Name] NVARCHAR(120), CONSTRAINT [PK_Genre] PRIMARY KEY ([GenreId]) ); INSERT INTO Genre VALUES(1,'Rock'); INSERT INTO Genre VALUES(2,'Jazz'); INSERT INTO Genre VALUES(3,'Metal'); INSERT INTO Genre VALUES(4,'Alternative & Punk'); INSERT INTO Genre VALUES(5,'Rock And Roll'); INSERT INTO Genre VALUES(6,'Blues'); INSERT INTO Genre VALUES(7,'Latin'); INSERT INTO Genre VALUES(8,'Reggae'); INSERT INTO Genre VALUES(9,'Pop'); INSERT INTO Genre VALUES(10,'Soundtrack'); INSERT INTO Genre VALUES(11,'Bossa Nova'); INSERT INTO Genre VALUES(12,'Easy Listening'); INSERT INTO Genre VALUES(13,'Heavy Metal'); INSERT INTO Genre VALUES(14,'R&B/Soul'); INSERT INTO Genre VALUES(15,'Electronica/Dance'); INSERT INTO Genre VALUES(16,'World'); INSERT INTO Genre VALUES(17,'Hip Hop/Rap'); INSERT INTO Genre VALUES(18,'Science Fiction'); INSERT INTO Genre VALUES(19,'TV Shows'); INSERT INTO Genre VALUES(20,'Sci Fi & Fantasy'); INSERT INTO Genre VALUES(21,'Drama'); INSERT INTO Genre VALUES(22,'Comedy'); INSERT INTO Genre VALUES(23,'Alternative'); INSERT INTO Genre VALUES(24,'Classical'); INSERT INTO Genre VALUES(25,'Opera'); COMMIT;