Данный:
Дерево каталогов, которое содержит файлы с .sql
расширение.
Requred
Найдите их всех рекурсивно и передайте найденные файлы один за другим mysql
клиент как:
mysql < ./dir/subdir/subsubdir/schema.sql
Моя слабая попытка
find . -name '*.sql' | xargs mysql
Результаты в:
ERROR 1049 (42000): Unknown database './dir/subdir/subsubdir/schema.sql'
Вопрос
Как сделать это правильный?
Спасибо!
Я полагаю, что это будет работать
find . -type f -name '*.sql' -exec bash -c 'cat '{}' | mysql' \;
В основном вышеупомянутое находит все файлы, заканчивающиеся в .sql (я поместил - тип f там на всякий случай существуют любые каталоги, которые заканчиваются в .sql). Для каждого найденного файла найдите выполнения исполнительной командой. Должностное лицо выполняет подоболочку удара что кошки файл и каналы это к mysql программе.
Надеюсь, это поможет.
В земельном участке попытки выполнить все, рассмотрите хождение двумя путями шага: соберите все пути к файлам в единственный файл, затем используйте source
управляйте для петляния
find . type f -name '*.sql' -printf 'source %P;\n' > allsql.txt
mysql -u <user> -p -e "source allsql.txt"
Конечно, если отличающийся sql ссылка файлов различные базы данных или имеют конфликтующие запросы - mysql, бросит ошибки, и поэтому даже при том, что это может работать, это обычно - не лучшая идея. Также необходимо иметь в виду, что имя базы данных, для которого Вы выполнение запросов должно быть предоставлено на командной строке или через оператор use <databasename>
.