1、将sql语句直接嵌入到shell脚本文件中
--演示环境[root@szdb ~]# more /etc/issuecentos release 5.9 (final)kernel \r on an \mroot@localhost[(none)]> show variables like 'version';+---------------+------------+| variable_name | value |+---------------+------------+| version | 5.6.12-log |+---------------+------------+[root@szdb ~]# more shell_call_sql1.sh #!/bin/bash# define logtimestamp=`date +%y%m%d%h%m%s`log=call_sql_${timestamp}.logecho start execute sql statement at `date`. >>${log}# execute sql statmysql -uroot -p123456 -e tee /tmp/temp.logdrop database if exists tempdb;create database tempdb;use tempdbcreate table if not exists tb_tmp(id smallint,val varchar(20));insert into tb_tmp values (1,'jack'),(2,'robin'),(3,'mark');select * from tb_tmp;noteequitecho -e \n>>${log}echo below is output result.>>${log}cat /tmp/temp.log>>${log}echo script executed successful.>>${log}exit;[root@szdb ~]# ./shell_call_sql1.sh logging to file '/tmp/temp.log'+------+-------+| id | val |+------+-------+| 1 | jack || 2 | robin || 3 | mark |+------+-------+outfile disabled.--author : leshami--blog : http://blog.csdn.net/leshami
2、命令行调用单独的sql文件
[root@szdb ~]# more temp.sql tee /tmp/temp.logdrop database if exists tempdb;create database tempdb;use tempdbcreate table if not exists tb_tmp(id smallint,val varchar(20));insert into tb_tmp values (1,'jack'),(2,'robin'),(3,'mark');select * from tb_tmp;notee[root@szdb ~]# mysql -uroot -p123456 -e source /root/temp.sqllogging to file '/tmp/temp.log'+------+-------+| id | val |+------+-------+| 1 | jack || 2 | robin || 3 | mark |+------+-------+outfile disabled.
3、使用管道符调用sql文件
[root@szdb ~]# mysql -uroot -p123456 4、shell脚本中mysql提示符下调用sql
[root@szdb ~]# more shell_call_sql2.sh#!/bin/bashmysql -uroot -p123456 <
[root@szdb ~]# more shell_call_sql3.sh#!/bin/bashcmd=select count(*) from tempdb.tb_tmpcnt=$(mysql -uroot -p123456 -s -e ${cmd})echo current count is : ${cnt}exit [root@szdb ~]# ./shell_call_sql3.sh warning: using a password on the command line interface can be insecure.current count is : 3[root@szdb ~]# echo select count(*) from tempdb.tb_tmp|mysql -uroot -p123456 -s3[root@szdb ~]# more shell_call_sql4.sh#!/bin/bashid=1cmd=select count(*) from tempdb.tb_tmp where id=${id}cnt=$(mysql -uroot -p123456 -s -e ${cmd})echo current count is : ${cnt}exit [root@szdb ~]# ./shell_call_sql4.sh current count is : 1#以上脚本演示中,作抛砖引玉只用,对于输出的结果不是很规整友好,需要进一步改善和提高。