删除所有表中的所有数据

the*_*her 3 delete oracle-11g-r2 oracle-11g

我有一个小问题。我必须从我们的数据库中删除所有数据。我不想删除表,只想删除数据集。

总共有47张桌子。

我尝试了以下方法:

Delete FROM(select TABLE_NAME from USER_TABLES);
Delete FROM(select * from ALL_ALL_TABLES Where OWNER = 'DB_NAME')
Run Code Online (Sandbox Code Playgroud)

但这是无效的。如何有效地从所有表中删除所有数据?

小智 7

生成您需要的语句

select 'DELETE FROM '||table_name||' ;' from user_tables;
Run Code Online (Sandbox Code Playgroud)

更好的是使用TRUNCATE而不是DELETE. 这将防止在重做日志中生成额外的重做向量 - 最后你想要做的只是摆脱数据。它还可以避免DELETE表具有的任何触发器的所有操作。

select 'TRUNCATE TABLE '||table_name||' ;' from user_tables;
Run Code Online (Sandbox Code Playgroud)

  • 或者更好的`TRUNCATE`而不是`DELETE FROM`——如果你只想删除数据,真的没有必要在重做日志中生成额外的重做向量。 (4认同)