在Shell脚本中使用mysql

在shell脚本中使用mysql可以避免繁琐的交互查询,快速获得查询结果。

在程序中通常是使用MySQL对应语言的编程接口,例如Perl DBI接口。不过对于简单任务,可以在shell中直接调用mysql,并将结果输出给另外的命令处理。

  • 一个简单的查询mysql启动时间的shell

#!/bin/sh
# mysql_uptime.sh - report server uptime in seconds

mysql --skip-column-names -B -e "SHOW /*!50002 GLOBAL */ STATUS LIKE 'Uptime'"

上述脚本也可以将简单的mysql STATUS; 命令输出递交给shell处理

#!/bin/sh
# mysql_uptime2.sh - report server uptime

mysql -e STATUS | grep "^Uptime"

在shell中可以使用一种称为here-document的方式来实现类似从文件输入的命令:

command <<MARKER input line 1input line 2input line 3
...
MARKER

举例:

#!/bin/sh
# new_log_entries.sh - count yesterday's log entries

mysql cookbook <<MYSQL_INPUT
SELECT COUNT(*) As 'New log entries:'
FROM log_tbl
WHERE date_added = DATE_SUB(CURDATE(),INTERVAL 1 DAY);
MYSQL_INPUT

以下举例计算数据表行数:

字符和编码

对于MySQL中使用了UTF-8编码的字符,则在shell脚本中需要同样设置LANG,否则会导致shell中字符无法正常显示:

参考

Last updated

Was this helpful?