Denne artikel indeholder tre måder at generere et SQL-script fra en eksisterende tabel i SQLite.
Alle tre metoder genererer CREATE TABLE
script, men den sidste metode genererer også INSERT
erklæringer for indsættelse af data.
.schema-kommandoen
Hvis du kun ønsker at scripte tabelstrukturen (dvs. uden dens data), kan du bruge .schema
kommando.
For at gøre dette skal du blot bruge .schema
efterfulgt af navnet på den tabel, du vil scripte.
Her er et eksempel:
.schema Genre
Resultat:
CREATE TABLE [Genre] ( [GenreId] INTEGER NOT NULL, [Name] NVARCHAR(120), CONSTRAINT [PK_Genre] PRIMARY KEY ([GenreId]) );
I dette tilfælde skrev jeg scriptet til Genre
tabel.
Du kan også bruge mønstermatchning med .schema
kommando.
For eksempel returnerer følgende kommando det samme resultat som den forrige:
.schema Gen%
Du kan også bruge .schema
kommando til at skrive hele databasen. For at gøre dette skal du blot bruge kommandoen uden et argument. Sådan:
.schema
Som standard er .schema
viser skemaet for alle vedhæftede databaser. Hvis du kun ønsker at se skemaet for en enkelt database, kan du tilføje et argument for at angive den/de databaser, du er interesseret i.
For eksempel:
.schema main.*
sqlite_master-tabellen
Et alternativ til .schema
er at forespørge direkte på sqlite_master bord. Denne tabel indeholder en kolonne kaldet sql , som indeholder den SQL, der bruges til at oprette tabellen.
Her er et eksempel:
SELECT sql FROM sqlite_master WHERE tbl_name = 'Genre';
Resultat:
CREATE TABLE [Genre] ( [GenreId] INTEGER NOT NULL, [Name] NVARCHAR(120), CONSTRAINT [PK_Genre] PRIMARY KEY ([GenreId]) )
Medtag tabeldata
Hvis du vil have alle data, skal du bruge .dump
kommando. Denne kommando scripter CREATE TABLE
sætning samt INSERT
sætninger til at indsætte alle data i tabellen.
Her er et eksempel:
.dump Genre
Resultat:
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;