Quelle est la commande pour supprimer toutes les tables dans SQLite?
De même, j'aimerais supprimer tous les index.
Quelle est la commande pour supprimer toutes les tables dans SQLite?
De même, j'aimerais supprimer tous les index.
S'il est vrai qu'il n'y a pas de commande DROP ALL TABLES, vous pouvez utiliser le jeu de commandes suivant.
Remarque: ces commandes risquent de corrompre votre base de données. Assurez-vous donc que vous avez une sauvegarde.
PRAGMA writable_schema = 1;
delete from sqlite_master where type = 'table';
PRAGMA writable_schema = 0;
vous voulez ensuite récupérer l'espace supprimé avec
VACUUM;
et un bon test pour s'assurer que tout va bien
PRAGMA INTEGRITY_CHECK;
Je ne pense pas que vous pouvez supprimer toutes les tables d'un seul coup, mais vous pouvez effectuer les opérations suivantes pour obtenir les commandes:
select 'drop table ' || name || ';' from sqlite_master
where type = 'table';
La sortie de ce script qui va baisser les tables pour vous. Pour les index, il suffit de remplacer la table d'index.
Vous pouvez utiliser d'autres clauses de la where
section pour limiter le nombre de tables et d'index sont sélectionnés (comme "and name glob 'pax_*'
" pour ceux qui commencent avec "pax_").
Vous pouvez combiner la création de ce script avec le fonctionnement de celui-ci dans un simple bash (ou cmd.exe script donc il n'y a qu'une seule commande à exécuter.
Si vous ne se soucient pas de toute l'information dans la base de données, je pense que vous pouvez simplement supprimer le fichier, il est stocké dans hors du disque dur - c'est probablement plus rapide. Je n'ai jamais testé mais je ne vois pas pourquoi ça ne marcherait pas.
J'ai eu le même problème avec SQLite et Android. Voici ma solution:
List<String> tables = new ArrayList<String>();
Cursor cursor = db.rawQuery("SELECT * FROM sqlite_master WHERE type='table';", null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
String tableName = cursor.getString(1);
if (!tableName.equals("android_metadata") &&
!tableName.equals("sqlite_sequence"))
tables.add(tableName);
cursor.moveToNext();
}
cursor.close();
for(String tableName:tables) {
db.execSQL("DROP TABLE IF EXISTS " + tableName);
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.