@denislysenko
data engineer

Как автоматизировать запуск sql скриптов?

Есть папка, которая хранит в себе sql файлы для создания бд, таблиц в этой бд, импорт данных в эти таблицы.
Как автоматизировать запуск этих sql скриптов?
Через файлы с расширением sh? Или у драйвера MySQL.connect есть метод execute у которого есть функция чтения sql скриптов? Каким способ это сделать проще?
  • Вопрос задан
  • 1623 просмотра
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
MySQL имеет собственный встроенный планировщик (MySQL 8.0 Reference Manual / Stored Objects / ...), который может делать практически что угодно. Создаёшь Event Procedure, задаёшь периодичность выполнения - остальное сервер сделает сам. Вообще без помощи/управления со стороны.

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

Есть папка, которая хранит в себе sql файлы для создания бд, таблиц в этой бд, импорт данных в эти таблицы.
Как автоматизировать запуск этих sql скриптов?

Создание БД, таблица, начальное наполнение - это как бы одноразовое действие. Нафига их шедулить?
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
toxa82
@toxa82
mysql -A -D basename < file.sql
Ответ написан
Комментировать
@Arik
Ответ написан
Комментировать
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Проще всего будет действительно через шелл скрипт ("файл с расширением sh"), причем даже записывать эту команду в файл не обязательно, а можно просто выполнить в консоли:
for file in `ls /path/to/files/*.sql`; do mysql -uUSER -pPASSWORD DATABASE < $file ; done

здесь mysql - это консольный клиент mysql
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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