sql >> データベース >  >> RDS >> SQLite

SQLiteの既存のテーブルからCREATETABLEスクリプトを生成する3つの方法

    この記事には、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;


    1. 長い単一のSQLiteOpenHelperを、テーブルごとに1つずつ、複数のクラスに分割するにはどうすればよいですか。

    2. MySQLの同じテーブルに挿入する方法は?

    3. SQL Serverブロッキングを使用したDBAドアでのブロック、ブロック、ブロッキング

    4. MariaDBでのモジュロ演算子のしくみ