Назад | Перейти на главную страницу

Запустить SQL-запрос из cron

Я хочу выполнить SQL-запрос через cron. Я подумал, что создам .sql файл и вызываю его из сценария, который я помещаю в папку cron. Запрос относительно большой и написан не мной, поэтому я бы предпочел не создавать его заново на PHP.

Может ли кто-нибудь помочь? Я не совсем понимаю, как запустить SQL-запрос из сценария. Заранее спасибо.

РЕДАКТИРОВАТЬ: просто для некоторой справочной информации запрос предназначен для получения данных из нескольких таблиц и организации их в файле csv.

Каждая база данных имеет клиентский инструмент командной строки.

Для MySQL см. man mysql

команда добавить в cron что-то вроде этого

cat /dir/query.sql|mysql database -u user -ppass >result


Для PHP вы можете использовать файловый ввод-вывод для чтения запроса, после чего используйте строковую переменную вместо запроса в ваших запросах.

Решение, которое я в итоге использовал, заключалось в том, чтобы поместить запрос в «здесь документ». Затем этот сценарий bash был реализован с помощью cron. Для получения дополнительной информации перейдите по этой ссылке: http://snippets.dzone.com/posts/show/3078

И на тот случай, если эта ссылка отключится, вот фрагмент кода примера:

#! /usr/bin/env bash
# execute some bash scripting commands here

mysql mydatabase <<SQL_ENTRY_TAG_1
SELECT * 
  FROM mytable 
  WHERE somecondition='somevalue';
SQL_ENTRY_TAG_1

# execute other bash scripting commands here

mysql mydatabase <<SQL_ENTRY_TAG_2
SELECT *
  FROM myothertable
  WHERE someothercondition='someothervalue';
SQL_ENTRY_TAG_2