Den här artikeln innehåller tre sätt att generera ett SQL-skript från en befintlig tabell i SQLite.
Alla tre metoderna genererar CREATE TABLE
skript, men den sista metoden genererar också INSERT
uttalanden för att infoga data.
.schema-kommandot
Om du bara vill skripta tabellstrukturen (dvs utan dess data), kan du använda .schema
kommando.
För att göra detta, använd helt enkelt .schema
följt av namnet på tabellen du vill skripta.
Här är ett exempel:
.schema Genre
Resultat:
CREATE TABLE [Genre] ( [GenreId] INTEGER NOT NULL, [Name] NVARCHAR(120), CONSTRAINT [PK_Genre] PRIMARY KEY ([GenreId]) );
I det här fallet skrev jag ett skript till Genre
bord.
Du kan också använda mönstermatchning med .schema
kommando.
Till exempel returnerar följande kommando samma resultat som det föregående:
.schema Gen%
Du kan också använda .schema
kommando för att skripta hela databasen. För att göra detta, använd helt enkelt kommandot utan argument. Så här:
.schema
Som standard är .schema
visar schemat för alla bifogade databaser. Om du bara vill se schemat för en enskild databas kan du lägga till ett argument för att specificera databasen/databaserna du är intresserad av.
Till exempel:
.schema main.*
Sqlite_master-tabellen
Ett alternativ till .schema
är att direkt fråga sqlite_master tabell. Den här tabellen innehåller en kolumn som heter sql , som innehåller den SQL som används för att skapa tabellen.
Här är ett exempel:
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]) )
Inkludera tabelldata
Om du vill ha all data, använd .dump
kommando. Detta kommando skriptar CREATE TABLE
satsen samt INSERT
satser för att infoga all data i tabellen.
Här är ett exempel:
.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;