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;