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
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'
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.
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