从Windows命令行截断mysql中的表

时间:2014-11-05 17:04:09

标签: mysql cmd command

我试图截断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文件中放什么。

0 个答案:

没有答案