Ten artykuł zawiera trzy sposoby generowania skryptu SQL z istniejącej tabeli w SQLite.
Wszystkie trzy metody generują CREATE TABLE
skrypt, ale ostatnia metoda generuje również INSERT
oświadczenia dotyczące wstawiania danych.
Polecenie .schema
Jeśli chcesz tylko skryptować strukturę tabeli (tj. bez jej danych), możesz użyć .schema
Komenda.
Aby to zrobić, po prostu użyj .schema
a następnie nazwa tabeli, którą chcesz napisać.
Oto przykład:
.schema Genre
Wynik:
CREATE TABLE [Genre] ( [GenreId] INTEGER NOT NULL, [Name] NVARCHAR(120), CONSTRAINT [PK_Genre] PRIMARY KEY ([GenreId]) );
W tym przypadku napisałem skrypt Genre
tabela.
Możesz także użyć dopasowania wzorca z .schema
Komenda.
Na przykład poniższe polecenie zwraca ten sam wynik, co poprzednie:
.schema Gen%
Możesz także użyć .schema
polecenie do skryptowania całej bazy danych. Aby to zrobić, po prostu użyj polecenia bez argumentu. Tak:
.schema
Domyślnie .schema
pokazuje schemat dla wszystkich dołączonych baz danych. Jeśli chcesz zobaczyć schemat tylko dla jednej bazy danych, możesz dodać argument określający interesujące Cię bazy danych.
Na przykład:
.schema main.*
Tabela sqlite_master
Alternatywa dla .schema
jest bezpośrednie wysłanie zapytania do sqlite_master stół. Ta tabela zawiera kolumnę o nazwie sql , który zawiera kod SQL użyty do utworzenia tabeli.
Oto przykład:
SELECT sql FROM sqlite_master WHERE tbl_name = 'Genre';
Wynik:
CREATE TABLE [Genre] ( [GenreId] INTEGER NOT NULL, [Name] NVARCHAR(120), CONSTRAINT [PK_Genre] PRIMARY KEY ([GenreId]) )
Dołącz dane tabeli
Jeśli chcesz wszystkie dane, użyj .dump
Komenda. To polecenie skryptuje CREATE TABLE
oświadczenie oraz INSERT
instrukcje wstawiania wszystkich danych do tabeli.
Oto przykład:
.dump Genre
Wynik:
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;