SQLite
 sql >> Database >  >> RDS >> SQLite

3 modi per generare uno script CREATE TABLE da una tabella esistente in SQLite

Questo articolo contiene tre modi per generare uno script SQL da una tabella esistente in SQLite.

Tutti e tre i metodi generano il CREATE TABLE script, ma l'ultimo metodo genera anche INSERT istruzioni per l'inserimento dei dati.

Il comando .schema

Se vuoi scrivere solo la struttura della tabella (cioè senza i suoi dati), puoi usare il .schema comando.

Per farlo, usa semplicemente .schema seguito dal nome della tabella di cui desideri eseguire lo script.

Ecco un esempio:

.schema Genre

Risultato:

CREATE TABLE [Genre]
(
    [GenreId] INTEGER  NOT NULL,
    [Name] NVARCHAR(120),
    CONSTRAINT [PK_Genre] PRIMARY KEY  ([GenreId])
);

In questo caso ho scritto il Genre tabella.

Puoi anche utilizzare il pattern matching con .schema comando.

Ad esempio, il comando seguente restituisce lo stesso risultato del precedente:

.schema Gen%

Puoi anche usare il .schema comando per eseguire lo script dell'intero database. Per fare ciò, usa semplicemente il comando senza un argomento. In questo modo:

.schema

Per impostazione predefinita, .schema mostra lo schema per tutti i database collegati. Se vuoi vedere solo lo schema per un singolo database, puoi aggiungere un argomento per specificare il/i database che ti interessa.

Ad esempio:

.schema main.*

Il tavolo sqlite_master

Un'alternativa a .schema è interrogare direttamente sqlite_master tavolo. Questa tabella contiene una colonna denominata sql , che contiene l'SQL utilizzato per creare la tabella.

Ecco un esempio:

SELECT sql FROM sqlite_master WHERE tbl_name = 'Genre';

Risultato:

CREATE TABLE [Genre]
(
    [GenreId] INTEGER  NOT NULL,
    [Name] NVARCHAR(120),
    CONSTRAINT [PK_Genre] PRIMARY KEY  ([GenreId])
)

Includi dati tabella

Se vuoi tutti i dati, usa il .dump comando. Questo comando esegue lo script di CREATE TABLE istruzione così come il INSERT istruzioni per inserire tutti i dati nella tabella.

Ecco un esempio:

.dump Genre

Risultato:

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;