admin

从MYSQL中的所有表中删除数据

sql

我有100个表,每个表40,000行。我想进入MySQL并从 所有* 表中删除 所有 行。 *

…如果可能的话,用1条陈述?

我想保留数据库和表。


阅读 153

收藏
2021-05-10

共1个答案

admin

我不这么认为(但以前我做错了)。我倾向于做的是那些情况,这是一个两步过程。

如果您的DBMS具有命令行界面,则可以使用它来创建脚本来完成大部分工作,例如:

db2 "select 'db2 delete from ' | tblname from sysibm.systables
    where owner = 'pax'" >p2.sh
p2.sh

第一位只是简单地创建一个p2.sh文件(或p2.cmdWindows下的文件),该文件包含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系统表来获取表名。

但有一点-
您可能希望where在该选择项上放置一个子句,以将表限制为要删除的表。按原样查询将尝试删除每个表。一种可能性是将其限制为特定值table_schema和/或table_type值。

2021-05-10