什么是每天在几个数据库上自动运行MySQL脚本的最佳方法?

时间:2013-04-24 23:19:06

标签: php python mysql sql ruby

每晚使用脚本自动查询数十个MySQL数据库的最佳方法是什么?该脚本通常不会返回任何结果,因此,如果有任何结果,我最好通过电子邮件或通知我。

我已经研究过PHP,Ruby和Python,但我对如何最好地处理这个问题感到有点困惑。

3 个答案:

答案 0 :(得分:1)

我相信唯一可以回答这个问题的是你。你给出的所有3个例子都可以做你需要用cron做的事情来自动完成工作。但最好使用的脚本语言是您最习惯使用的语言。

答案 1 :(得分:1)

虽然实际的脚本执行有很多选项,但最终它们都归结为cron,正如@squiguy所说。 Cron是事实上的任务调度程序,允许您随时运行任何自动化任务。

只需将您的查询放在一个文件中,将其保存为某个地方的.sql,然后将这样的内容添加到您的cron(运行crontab -e)以便每晚3:30运行它:

30 3 * * * /usr/bin/mysql -u<user> -p<pass> <dbname> < /var/scripts/myscript.sql

然后在cron中添加一行以通过电子邮件通知您:

MAILTO=mymail@address.com

在crons中,始终使用绝对路径来访问所有文件和可执行文件。运行which mysql以找出mysql可执行文件的绝对路径。

或者您也可以运行这样的PHP脚本,并使用ob_start来捕获所有输出,然后使用mail通过电子邮件发送它,或者使用Ruby,C ++等任何其他语言类似的东西Python或任何人都关心LISP或COBOL。

答案 2 :(得分:0)

如果可以使用存储过程,则使用事件: http://dev.mysql.com/doc/refman/5.5/en/events.html

否则,您可以使用cron: http://quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger

如果您需要调用无法通过CLI或CGI运行的PHP脚本,请使用cron调用文本浏览器lynx并将其传递给脚本的URL: http://linux.die.net/man/1/lynx