SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

3 maneiras de gerar um script CREATE TABLE a partir de uma tabela existente no SQLite


Este artigo contém três maneiras de gerar um script SQL de uma tabela existente no SQLite.

Todos os três métodos geram o CREATE TABLE script, mas o último método também gera o INSERT instruções para inserir os dados.

O comando .schema


Se você quiser apenas fazer um script da estrutura da tabela (ou seja, sem seus dados), você pode usar o .schema comando.

Para fazer isso, basta usar .schema seguido pelo nome da tabela que você deseja criar script.

Aqui está um exemplo:
.schema Genre

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

Neste caso, criei o script Genre tabela.

Você também pode usar a correspondência de padrões com o .schema comando.

Por exemplo, o comando a seguir retorna o mesmo resultado que o anterior:
.schema Gen%

Você também pode usar o .schema comando para fazer o script de todo o banco de dados. Para fazer isso, basta usar o comando sem um argumento. Assim:
.schema

Por padrão, .schema mostra o esquema para todos os bancos de dados anexados. Se você deseja ver apenas o esquema de um único banco de dados, pode adicionar um argumento para especificar o(s) banco(s) de dados em que está interessado.

Por exemplo:
.schema main.*

A tabela sqlite_master


Uma alternativa para .schema é consultar diretamente o sqlite_master tabela. Esta tabela contém uma coluna chamada sql , que contém o SQL usado para criar a tabela.

Aqui está um exemplo:
SELECT sql FROM sqlite_master WHERE tbl_name = 'Genre';

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

Incluir dados da tabela


Se você quiser todos os dados, use o .dump comando. Este comando cria um script de CREATE TABLE instrução, bem como o INSERT instruções para inserir todos os dados na tabela.

Aqui está um exemplo:
.dump Genre

Resultado:
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;