web-dev-qa-db-fra.com

Supprimer toutes les données de toutes les tables

J'ai un petit problème. Je dois supprimer toutes les données de notre base de données. Je ne veux pas déposer de tables, supprimez uniquement les ensembles de données.

Ce sont 47 tables au total.

J'ai essayé ce qui suit:

Delete FROM(select TABLE_NAME from USER_TABLES);
Delete FROM(select * from ALL_ALL_TABLES Where OWNER = 'DB_NAME')

Mais ce n'est pas valide. Comment puis-je supprimer efficacement toutes les données de toutes mes tables?

3
thecrasher

Générer les déclarations dont vous avez besoin

select 'DELETE FROM '||table_name||' ;' from user_tables;

Encore mieux utiliserait TRUNCATE au lieu de DELETE. Cela empêcherait de générer des vecteurs de Redo supplémentaires dans le journal de Redo. Dans la fin, tout ce que vous voulez faire est de vous débarrasser des données. Cela éviterait également toutes les actions de tout DELETE déclenche que les tables ont.

select 'TRUNCATE TABLE '||table_name||' ;' from user_tables;
7
Mihai