Copie structure de table à table dans sqlite3
Est-il un moyen facile de copier une table existante structure pour un nouveau?
(n'ont pas besoin de ces données, seule la structure -> comme id INTEGER, nom varchar(20) ...)
Thx
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser une commande comme ceci:
mais en raison de SQLite du typage dynamique, la plus type d'information serait perdue.
Si vous avez besoin d'une table qui se comporte comme l'original, c'est à dire, a le même nombre et les noms de colonnes, et peut stocker les mêmes valeurs, c'est assez.
Si vous avez vraiment besoin de l'information concernant le type exactement comme l'original, vous pouvez lire la version d'origine de SQL
CREATE TABLE
déclaration de l'sqlite_master
tableau, comme ceci:SQLite ne peut pas cloner table avec PK, les valeurs par défaut et les indices.
De piratage par un autre outil n'est nécessaire.
En coque, remplacer le nom de la table par le sed.
Et vous pouvez vérifier à nouveau le tableau.
Clé primaire, les valeurs par défaut et des indices vous seront réservés.
J'espère que cette commande peut vous aider.
sqlite> .schéma
.schéma de commande de vous donner la structure de Propos de table comment il pourrait en être faite par programmation SQLite interprète à la main, saisissant les commandes.
Coller dans et exécuter, de les CRÉER de bloc de donner la table nouveau nom:
.les tableaux de commande va maintenant montrer que vous avez deux tables, l'ancien et le nouveau, a "copié".
p.s. sqlite> est l'invite de commande, vous obtenez dans la console après le lancement de SQLite.exe interprète. Pour l'obtenir aller à http://www.sqlite.org
Je préfère :
La ligne ci-dessus génère le vidage de table qui comprend DDL et DML.
Apporter des modifications dans ce fichier, c'est à dire trouver et remplacer le nom de la table avec le nouveau nom de la table
Aussi, remplacer
"CREATE TRIGGER "
avec"CREATE TRIGGER <NEWTABLE>_"
, ce sera de remplacer les déclencheurs existants avec les noms des déclencheurs avec un nouveau nom de la table sur elle. Qui le rendent unique et ne sera pas causer des conflits avec les déclencheurs existants. Une fois que toutes les modifications de schéma sont mis en œuvre, le lire dans la base de données à l'aide de.read
Cela peut être fait avec des scripts en shell fichier à l'aide des commandes du shell comme :
Par exemple :
Si vous avez de la table T et de la nouvelle table est TClone dans le fichier db D avec le fichier F pour la création : puis
Enfin, vous pouvez généraliser ce script en créant une version paramétrée où vous pouvez passer source_table, destination_table , db_file que les paramètres peuvent être utilisés pour cloner n'importe quel tableau.
J'ai testé et ça marche.
Test :
devrait vous donner les mêmes résultats que la table d'origine. et
doivent avoir le même schéma que celui de la table d'origine avec un nouveau nom.