LINUX.ORG.RU

bash sql команда

 ,


0

2

echo ls $folder/*.frm | xargs -n1 basename | sed 's/\.frm//g' | xargs -i echo «ALTER TABLE {} DISCARD TABLESPACE;» | xargs echo | mysql -u$mysql_user -p$mysql_password $db

что делает команда
получаем файлы из каталога, получаем только имена,обрезаем расширения, генерим на каждый файл обертку ALTER TABLE имя файла DISCARD TABLESPACE и выполняю команду в mysql
но проблема в том что sql оманда не запускается
в чем проблема?

Дебажь по шагам. Сначала вместо последнего | mysql ... добавь перенаправление в файл и проверь, что в файле ожидаемые строчки. Потом вместо портянки xargs делай cat $F | mysql ... (где $F - файл с предыдущего запуска) и смотри что произойдет.

И вообще непонятно, как ты понял, что mysql не запускается. Сообщения об ошибках? Запросы не выполнились?

При внимательном просмотре вопросы начинаются с первой же команды. Нука, что выведет echo ls?

anonymous7
()

Убери лишнее.

ls $folder/*.frm | xargs -i basename -s .frm {}  | xargs -i echo 'ALTER TABLE {} DISCARD TABLESPACE;' | mysql -u$mysql_user -p$mysql_password $db
Deleted
()
for i in $folder/*.frm; do mysql -u$mysql_user -p$mysql_password $db "ALTER TABLE $(basename -s .frm $i) DISCARD TABLESPACE;"; done

в чем проблема?

В том что «sql оманда не запускается», сами же пишете =)

Если вручную запустить будет работать? То есть имя брать не из файла, а самому вписать, но все остальное типа вызова mysql с именем пользователя и паролем из переменных оставить.

micronekodesu ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.