如何从.sh脚本截断表?

时间:2013-09-17 08:20:09

标签: mysql sql linux

我有这个.sh脚本来优化表

#!/bin/sh 
mysql -u'user' -p'pwd' -D'db' </var/www/vhosts/mydomain/httpdocs/optimize.sql

...和optimize.sql中的这个sql

OPTIMIZE TABLE `this_table` 

一切正常。

现在我正在做同样的事情来截断一个表:

#!/bin/sh 
mysql -u'user' -p'pwd' -D'db' </var/www/vhosts/mydomain/httpdocs/truncate.sql

...和truncate.sql中的这个sql

TRUNCATE TABLE `this_table`

......但它不起作用!有什么问题?

P.S。我使用Crontab每x分钟运行.sh,这仅适用于优化

2 个答案:

答案 0 :(得分:2)

您还可以使用文件来存储mysql凭据,例如:

nano .my.cnf

并添加以下内容:

[mysql]
user=your_user
password=the_super_secret_password

然后在shell脚本中执行您的SQL语句,如下所示:

#!/bin/bash
`mysql --defaults-file=/path/to/.my.cnf -e "truncate table this_table;"`

为什么要将凭据放在单独的文件中? 因此,在更改密码时,不必单独更新所有使用这些凭据的shell脚本。

答案 1 :(得分:1)

你也可以

#!/bin/sh 
echo "truncate table this_table" | mysql -u'user' -p'pwd' -D'db'