Tento článek obsahuje tři způsoby, jak vygenerovat SQL skript z existující tabulky v SQLite.
Všechny tři metody generují CREATE TABLE
script, ale poslední metoda také generuje INSERT
příkazy pro vkládání dat.
Příkaz .schema
Pokud chcete skriptovat pouze strukturu tabulky (tj. bez jejích dat), můžete použít .schema
příkaz.
Chcete-li to provést, jednoduše použijte .schema
následovaný názvem tabulky, kterou chcete skriptovat.
Zde je příklad:
.schema Genre
Výsledek:
CREATE TABLE [Genre] ( [GenreId] INTEGER NOT NULL, [Name] NVARCHAR(120), CONSTRAINT [PK_Genre] PRIMARY KEY ([GenreId]) );
V tomto případě jsem skriptoval Genre
tabulka.
Můžete také použít porovnávání vzorů s .schema
příkaz.
Například následující příkaz vrátí stejný výsledek jako předchozí:
.schema Gen%
Můžete také použít .schema
příkaz pro skriptování celé databáze. Chcete-li to provést, jednoduše použijte příkaz bez argumentu. Takhle:
.schema
Ve výchozím nastavení .schema
zobrazuje schéma pro všechny připojené databáze. Pokud chcete vidět schéma pouze pro jednu databázi, můžete přidat argument, který specifikuje databáze, které vás zajímají.
Například:
.schema main.*
Tabulka sqlite_master
Alternativa k .schema
je přímo dotazovat sqlite_master stůl. Tato tabulka obsahuje sloupec s názvem sql , který obsahuje SQL použitý k vytvoření tabulky.
Zde je příklad:
SELECT sql FROM sqlite_master WHERE tbl_name = 'Genre';
Výsledek:
CREATE TABLE [Genre] ( [GenreId] INTEGER NOT NULL, [Name] NVARCHAR(120), CONSTRAINT [PK_Genre] PRIMARY KEY ([GenreId]) )
Zahrnout data tabulky
Pokud chcete všechna data, použijte .dump
příkaz. Tento příkaz skriptuje CREATE TABLE
stejně jako INSERT
příkazy pro vložení všech dat do tabulky.
Zde je příklad:
.dump Genre
Výsledek:
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;