我试图截断MySQL数据库中的所有表。我阅读了this posting,然后在Windows命令行中尝试了以下内容:
mysql -u user_name -p -Nse 'show tables' database_name | while read table; do mysql -e "truncate table $table" database_name; done
请注意,我将-u user_name -p添加到上面问题最常用答案中给出的代码中(由battousaix给出)。但问题是MySQL正在抛出以下错误:
`while` is not recognized an an internal or external command, operable program, or batch file.
这个问题与上面链接中的问题不同,因为这个问题可能与windows命令行有关。
编辑:
我在从MySQL命令行调用的sql文件中尝试了以下内容:
use mydbname;
SET FOREIGN_KEY_CHECKS=0
SELECT Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';')
FROM INFORMATION_SCHEMA.TABLES where table_schema in (mydmname);
SET FOREIGN_KEY_CHECKS=1
请注意,mydbname
是我的数据库的实际名称,但上面代码中的所有其他术语完全如此处所示。我必须明确地给每个表名吗?请注意,发布开头的示例将在一个命令中执行所有表。这是此编辑中显示的5行源文件引发的错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'SELEC
T Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';')
FROM INFORMAT' at line 3
如何更改上面的代码,从windows命令行成功截断MySQL数据库中的所有表?我还可以愉快地使用MySQL命令行中的source
命令如果我知道要在sql文件中放什么。