23.4在脚本中使用数据库
1.查找数据库程序:which mysql
*把命令查找结果赋给一个变量,然当要引用对应的程序时就在shell脚本中使用这个变量即可运行程序。
MYSQL=`which mysql`
$MYSQL test -u love1 -p
*避免从命令行繁琐地输入密码又避免把密码写入脚本中,可以使用$HOME/.my.cnf文件来读取特殊的启动命令和设置。其中一项设置由该用户账户发起的mysql会话的默认密码。
(只要把用户的密码写入配置文件中即可,当密码相应的用户登录时不用输入密码就能登录)
$cat .my.cnf
[client]
password = 'password1'
password = 'password2'
注意:要注意保护此文件,最好把权限也修改到最安全状态
23.4.2 向服务器发送命令
*发送单个命令并退出:发送单个命令必须将命令作为mysql或psql命令行的一步分包含进去。且需要用-e參數
MYSQL=`which mysql`
$MYSQL test -u test -e ' select * from person'
*發送多條sql命令,可以使用文件重定向(參考14.3 exec 0< file 會告訴shell從文件獲得輸入,而不是STDIN)
另外要在shell脚本中重定向行,必须定义一个结束字符串。结束字符串指明了重定向数据的开始和结尾
MYSQL=`which mysql`
$MYSQL test -u test <<EOF
show tables;
select * from person;
EOF
23.4.3 格式化数据,
1.将输出赋给变量
MYSQL=`which mysql`
dbs=`$MYSQL test -u test -Bse 'show databases' `
for db in $dbs
do
echo $db
done
##############################################
-B参数指定mysql程序工作在批处理模式下
-s参数,禁止列出标题和格式化符号
2.使用格式化标签:mysql和psql程序都提供了一个以HTML格式显示结果的选项。两个程序都可一用-H命令行参数来实现此功能。
mysql可以用-X命令行参数来输出:
$mysql test -u test -X -e 'select * from person'