web-dev-qa-db-fra.com

Copier la structure de la table dans la nouvelle table dans sqlite3

Existe-t-il un moyen simple de copier une structure de table existante dans une nouvelle? (pas besoin des données, seulement la structure -> comme id INTEGER, nom varchar (20) ...)

THX

36
leon22

Vous pouvez utiliser une commande comme celle-ci:

CREATE TABLE copied AS SELECT * FROM mytable WHERE 0

mais en raison du typage dynamique de SQLite, la plupart des informations de type seraient perdues.

Si vous avez juste besoin d’une table qui se comporte comme l’original, c’est-à-dire qui porte le même nombre et le même nom de colonnes et peut stocker les mêmes valeurs, cela suffit.

Si vous avez réellement besoin des informations de type identiques à l'original, vous pouvez lire l'instruction CREATE TABLE SQL originale à partir de la table sqlite_master, comme suit:

SELECT sql FROM sqlite_master WHERE type='table' AND name='mytable'
72
CL.

SQLite ne peut pas cloner une table avec PK, valeurs par défaut et index.

Le piratage par un autre outil est nécessaire.

Dans Shell, remplacez le nom de la table par sed.

sqlite3 dbfile '.schema oldtable' | sed '1s/oldtable/newtable/' | sqlite3 dbfile

Et vous pouvez vérifier la nouvelle table.

sqlite3 dbfile '.schema newtable'

La clé primaire, les valeurs par défaut et les index seront réservés.

J'espère que cette commande peut vous aider.

11
Raymond Wu

sqlite> .schema

CREATE TABLE [About](
  [id],
  [name],
  [value]);

La commande .schema vous donnera la structure de la table À propos comment elle pourrait être réalisée en programmant manuellement un interpréteur SQLite, en tapant des commandes.

Coller et exécuter, le bloc CREATE donnant un nouveau nom à la table:

sqlite> CREATE TABLE [AboutToo](
  [id],
  [name],
  [value]);

La commande .tables va maintenant montrer que vous avez deux tables, ancienne et nouvelle, "copiée".

sqlite> .tables
About     AboutToo

p.s. sqlite> est une commande Invite que vous obtenez dans la console après le lancement de l'interpréteur SQLite.exe. Pour l'obtenir, allez sur www.sqlite.org

0
startup.maker