2013-09-17 2 views
0

Я получил этот сценарий .sh оптимизировать таблицуКак обрезать таблицу из сценария .sh?

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

... и это SQL в optimize.sql

OPTIMIZE TABLE `this_table` 

Это все работает отлично.

Теперь я делаю то же самое, чтобы усечение таблицы:

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

... и это SQL в truncate.sql

TRUNCATE TABLE `this_table` 

... но она не работает ! Что не так?

P.S. Я использовал Crontab запустить .sh каждые х минут, и это работает только для оптимизации

+0

:-) oh no, no ... это только пример, но теперь я его отредактирую ... у вас есть идея? Почему это не работает? – Bobo87

ответ

1

Также вы можете

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

ok теперь я собираюсь попробовать ... но ... в вашем .sh скрипте semms Я не могу указать свой sql-запрос ... Вы уверены, что он должен работать? – Bobo87

+0

ну, я просто говорю, что вы можете эхо-запрос вместо запроса cat'ing и иметь только один файл sh, содержащий два (sh + sql) файла. Я думаю, что это удобно. Он делает то же самое. И должен работать (если у пользователя есть права и таблицы, а mysql - в cron% PATH%) – mugiseyebrows

1

Также вы можете использовать файл для хранения данных MySQL учетных данных, например:

nano .my.cnf 

и добавить следующее содержание:

[mysql] 
user=your_user 
password=the_super_secret_password 

Затем выполнить ваш SQL заявление (ы) в сценарии оболочки (s) Вот так:

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

Зачем ставить учетные данные в отдельном файле? Чтобы все сценарии оболочки, которые вы используете эти учетные данные, не обязательно должны быть индивидуально обновлены, когда придет время сменить пароль.

Смежные вопросы