SQLite
 sql >> Base de données >  >> RDS >> SQLite

3 façons de générer un script CREATE TABLE à partir d'une table existante dans SQLite

Cet article contient trois façons de générer un script SQL à partir d'une table existante dans SQLite.

Les trois méthodes génèrent le CREATE TABLE script, mais la dernière méthode génère également le INSERT déclarations pour insérer les données.

La commande .schema

Si vous souhaitez uniquement scripter la structure de la table (c'est-à-dire sans ses données), vous pouvez utiliser le .schema commande.

Pour ce faire, utilisez simplement .schema suivi du nom de la table que vous souhaitez scripter.

Voici un exemple :

.schema Genre

Résultat :

CREATE TABLE [Genre]
(
    [GenreId] INTEGER  NOT NULL,
    [Name] NVARCHAR(120),
    CONSTRAINT [PK_Genre] PRIMARY KEY  ([GenreId])
);

Dans ce cas, j'ai écrit le Genre tableau.

Vous pouvez également utiliser la correspondance de modèle avec le .schema commande.

Par exemple, la commande suivante renvoie le même résultat que la précédente :

.schema Gen%

Vous pouvez également utiliser le .schema commande pour scripter toute la base de données. Pour ce faire, utilisez simplement la commande sans argument. Comme ceci :

.schema

Par défaut, .schema affiche le schéma de toutes les bases de données attachées. Si vous souhaitez uniquement voir le schéma d'une seule base de données, vous pouvez ajouter un argument pour spécifier la ou les bases de données qui vous intéressent.

Par exemple :

.schema main.*

Le tableau sqlite_master

Une alternative à .schema est d'interroger directement le sqlite_master table. Ce tableau contient une colonne appelée sql , qui contient le SQL utilisé pour créer la table.

Voici un exemple :

SELECT sql FROM sqlite_master WHERE tbl_name = 'Genre';

Résultat :

CREATE TABLE [Genre]
(
    [GenreId] INTEGER  NOT NULL,
    [Name] NVARCHAR(120),
    CONSTRAINT [PK_Genre] PRIMARY KEY  ([GenreId])
)

Inclure les données du tableau

Si vous voulez toutes les données, utilisez le .dump commande. Cette commande scripte le CREATE TABLE ainsi que le INSERT instructions pour insérer toutes les données dans la table.

Voici un exemple :

.dump Genre

Résultat :

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;