我有100个表,每个表40,000行。我想进入MySQL并从 所有* 表中删除 所有 行。 *
…如果可能的话,用1条陈述?
我想保留数据库和表。
我不这么认为(但以前我做错了)。我倾向于做的是那些情况,这是一个两步过程。
如果您的DBMS具有命令行界面,则可以使用它来创建脚本来完成大部分工作,例如:
db2 "select 'db2 delete from ' | tblname from sysibm.systables where owner = 'pax'" >p2.sh p2.sh
第一位只是简单地创建一个p2.sh文件(或p2.cmdWindows下的文件),该文件包含delete from所拥有的每个表的语句pax。然后,您只需运行该命令文件即可完成工作。当然,您可能要先检查它:-)
p2.sh
p2.cmd
delete from
pax
不是您要查找的一步式过程,但仍然非常简单。我在这里假设mysql也有一个命令行界面。
更新:
上面的MySQL版本看起来应该是这样的:
echo "select 'mysql truncate table ' | table_name from information_schema.tables" | mysql >p2.sh bash p2.sh
这使用的truncate命令通常比delete from删除所有行更有效。它还使用适当的MySQL系统表来获取表名。
truncate
但有一点- 您可能希望where在该选择项上放置一个子句,以将表限制为要删除的表。按原样查询将尝试删除每个表。一种可能性是将其限制为特定值table_schema和/或table_type值。
where
table_schema
table_type