主頁 > 知識庫 > Shell腳本中執(zhí)行sql語句操作mysql的5種方法

Shell腳本中執(zhí)行sql語句操作mysql的5種方法

熱門標(biāo)簽:鐵路電話系統(tǒng) Linux服務(wù)器 服務(wù)外包 呼叫中心市場需求 AI電銷 百度競價(jià)排名 網(wǎng)站排名優(yōu)化 地方門戶網(wǎng)站

對于自動(dòng)化運(yùn)維,諸如備份恢復(fù)之類的,DBA經(jīng)常需要將SQL語句封裝到shell腳本。本文描述了在Linux環(huán)境下mysql數(shù)據(jù)庫中,shell腳本下調(diào)用sql語句的幾種方法,供大家參考。對于腳本輸出的結(jié)果美化,需要進(jìn)一步完善和調(diào)整。以下為具體的示例及其方法。

1、將SQL語句直接嵌入到shell腳本文件中

復(fù)制代碼 代碼如下:

--演示環(huán)境 
[root@SZDB ~]# more /etc/issue 
CentOS release 5.9 (Final) 
Kernel \r on an \m 
 
root@localhost[(none)]> show variables like 'version'; 
+---------------+------------+ 
| Variable_name | Value      | 
+---------------+------------+ 
| version       | 5.6.12-log | 
+---------------+------------+ 
 
[root@SZDB ~]# more shell_call_sql1.sh  
#!/bin/bash 
# Define log 
TIMESTAMP=`date +%Y%m%d%H%M%S` 
LOG=call_sql_${TIMESTAMP}.log 
echo "Start execute sql statement at `date`." >>${LOG} 
 
# execute sql stat 
mysql -uroot -p123456 -e " 
tee /tmp/temp.log 
drop database if exists tempdb; 
create database tempdb; 
use tempdb 
create 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 
quit" 
 
echo -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. 

2、命令行調(diào)用單獨(dú)的SQL文件

復(fù)制代碼 代碼如下:

[root@SZDB ~]# more temp.sql  
tee /tmp/temp.log 
drop database if exists tempdb; 
create database tempdb; 
use tempdb 
create 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.sql" 
Logging to file '/tmp/temp.log' 
+------+-------+ 
| id   | val   | 
+------+-------+ 
|    1 | jack  | 
|    2 | robin | 
|    3 | mark  | 
+------+-------+ 
Outfile disabled. 

3、使用管道符調(diào)用SQL文件

復(fù)制代碼 代碼如下:

[root@SZDB ~]# mysql -uroot -p123456 /root/temp.sql 
Logging to file '/tmp/temp.log' 
id      val 
1       jack 
2       robin 
3       mark 
Outfile disabled. 
 
#使用管道符調(diào)用SQL文件以及輸出日志 
[root@SZDB ~]# mysql -uroot -p123456 /root/temp.sql >/tmp/temp.log 
[root@SZDB ~]# more /tmp/temp.log 
Logging to file '/tmp/temp.log' 
id      val 
1       jack 
2       robin 
3       mark 
Outfile disabled. 

4、shell腳本中MySQL提示符下調(diào)用SQL

復(fù)制代碼 代碼如下:

[root@SZDB ~]# more shell_call_sql2.sh 
#!/bin/bash 
mysql -uroot -p123456 EOF 
source /root/temp.sql; 
select current_date(); 
delete from tempdb.tb_tmp where id=3; 
select * from tempdb.tb_tmp where id=2; 
EOF 
exit; 
[root@SZDB ~]# ./shell_call_sql2.sh 
Logging to file '/tmp/temp.log' 
id      val 
1       jack 
2       robin 
3       mark 
Outfile disabled. 
current_date() 
2014-10-14 
id      val 
2       robin 

5、shell腳本中變量輸入與輸出

復(fù)制代碼 代碼如下:

[root@SZDB ~]# more shell_call_sql3.sh 
#!/bin/bash 
cmd="select count(*) from tempdb.tb_tmp" 
cnt=$(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 -s 

 
[root@SZDB ~]# more shell_call_sql4.sh 
#!/bin/bash 
id=1 
cmd="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 
 
#以上腳本演示中,作拋磚引玉只用,對于輸出的結(jié)果不是很規(guī)整友好,需要進(jìn)一步改善和提高。 

您可能感興趣的文章:
  • MySQL 最基本的SQL語法/語句
  • MySQL 創(chuàng)建主鍵,外鍵和復(fù)合主鍵的語句
  • MySql增加用戶、授權(quán)、修改密碼等語句
  • 淺談MySQL中優(yōu)化sql語句查詢常用的30種方法
  • mysql查詢今天、昨天、近7天、近30天、本月、上一月的SQL語句
  • MySQL數(shù)據(jù)庫INSERT、UPDATE、DELETE以及REPLACE語句的用法詳解
  • MySQL查詢語句大全集錦
  • 整理MySql常用查詢語句(23種)
  • MySQL SQL語句優(yōu)化的10條建議
  • mysql常用命令行操作語句
  • Mysql數(shù)據(jù)庫之sql基本語句小結(jié)

標(biāo)簽:湖南 仙桃 崇左 衡水 蘭州 湘潭 銅川 黃山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Shell腳本中執(zhí)行sql語句操作mysql的5種方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266