一尘不染

如何清空mysql中所有表的所有行(在SQL中)

mysql

我正在编写一些db实用程序脚本,我需要做的任务之一是仅重建数据,而保持架构不变。使用bash和mysql工具(无php等)从命令行自动执行此操作的最简单方法是什么?

更新:我希望该解决方案可以在一个命令中处理所有表,并且如果可能的话,如果添加或删除了表,则不需要更新。


阅读 256

收藏
2020-05-17

共1个答案

一尘不染

TRUNCATE tableName;

这将清空表的内容。

响应Q编辑:从我的快速测试中看来,您将必须至少执行2个查询,因为似乎“显示表”不能用作子查询,我不知道该怎么做bash,所以这是一个PHP示例,希望对您有所帮助。

<?php      
mysql_connect('localhost', 'user', 'password');
$dbName = "database";
mysql_select_db($dbName); /*added semi-colon*/
$result_t = mysql_query("SHOW TABLES");
while($row = mysql_fetch_assoc($result_t))
{
   mysql_query("TRUNCATE " . $row['Tables_in_' . $dbName]);
}
?>

至少这需要一些错误处理。

2020-05-17