Поиск рекурсивно всех файлов с .sql расширением и передает их mysql как аргумент

Данный:

Дерево каталогов, которое содержит файлы с .sql расширение.

Requred

Найдите их всех рекурсивно и передайте найденные файлы один за другим mysql клиент как:

mysql < ./dir/subdir/subsubdir/schema.sql

Моя слабая попытка

find . -name '*.sql' | xargs mysql

Результаты в:

ERROR 1049 (42000): Unknown database './dir/subdir/subsubdir/schema.sql'

Вопрос

Как сделать это правильный?

Спасибо!

1
задан 13 November 2018 в 17:12

2 ответа

Я полагаю, что это будет работать

find . -type f -name '*.sql' -exec bash -c 'cat '{}' | mysql' \;

В основном вышеупомянутое находит все файлы, заканчивающиеся в .sql (я поместил - тип f там на всякий случай существуют любые каталоги, которые заканчиваются в .sql). Для каждого найденного файла найдите выполнения исполнительной командой. Должностное лицо выполняет подоболочку удара что кошки файл и каналы это к mysql программе.

Надеюсь, это поможет.

1
ответ дан 7 December 2019 в 13:20

В земельном участке попытки выполнить все, рассмотрите хождение двумя путями шага: соберите все пути к файлам в единственный файл, затем используйте source управляйте для петляния

find . type f -name '*.sql' -printf 'source  %P;\n'    > allsql.txt
mysql -u <user> -p  -e "source allsql.txt"

Конечно, если отличающийся sql ссылка файлов различные базы данных или имеют конфликтующие запросы - mysql, бросит ошибки, и поэтому даже при том, что это может работать, это обычно - не лучшая идея. Также необходимо иметь в виду, что имя базы данных, для которого Вы выполнение запросов должно быть предоставлено на командной строке или через оператор use <databasename>.

1
ответ дан 7 December 2019 в 13:20

Другие вопросы по тегам:

Похожие вопросы: