如何在SQL中一次截断100个表

如何在SQL中一次截断100个表,sql,database,truncate,Sql,Database,Truncate,我只想删除数据而不是结构。为每个表生成一个TRUNCATE TABLE语句并执行它 你可以用很多方法来做到这一点,其中一些是 使用循环和动态SQL 将表名复制到excel并使用它生成语句 生成脚本 Oracle示例: set head off set pagesize 0 spool t.sql select 'truncate table '||table_name||';' from all_tables order by table_name where rownum < 100

我只想删除数据而不是结构。

为每个表生成一个
TRUNCATE TABLE
语句并执行它

你可以用很多方法来做到这一点,其中一些是

  • 使用循环和动态SQL
  • 将表名复制到excel并使用它生成语句
生成脚本

Oracle示例:

set head off
set pagesize 0
spool t.sql

select 'truncate table '||table_name||';' from all_tables
order by table_name
where rownum < 100
MySQL


这意味着我使用100次截断表query@jiten是的,为什么会有问题?问题是如何一次获取或复制100个表名time@jiten您知道要删除哪些表吗?它们写在某个地方,对吗?将它们复制到excel,您可以轻松地在excel中生成TRUNCATE TABLE语句,然后在SQL中粘贴以执行。您想用一条语句删除100个不同表中的所有数据吗?(或者您想从一个表中删除100行…?)我想从所有100个不同的表中删除datat,只使用1个语句您使用的是哪种dbms?(其中一些有TRUNCATE语句,其他没有…)ANSI SQL有FETCH FIRST,而不是TOP。(较新的Oracle版本也有FETCH FIRST。)@jarlh-谢谢,但我只是给出了特定于平台的示例,并提到了ANSI关于可以使用哪个字典表的问题。如果您想要改进,欢迎您进行编辑。
select top 100 
'truncate table ' + table_name + ';' 
from INFORMATION_SCHEMA.tables;
select CONCAT("truncate table ", table_name, ";")
from INFORMATION_SCHEMA.tables 
limit 100;