濮阳杆衣贸易有限公司

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

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

熱門標簽:地圖標注超出范圍怎么辦 旅游地圖標注大全 百度地圖的地圖標注 陜西電銷卡外呼系統(tǒng)怎么安裝 佛山高德地圖標注中心 excel地址地圖標注 東莞電銷機器人價格一覽表 百度地圖標注圖標更換 杭州機器人外呼系統(tǒng)

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

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

復制代碼 代碼如下:

--演示環(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、命令行調用單獨的SQL文件

復制代碼 代碼如下:

[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、使用管道符調用SQL文件

復制代碼 代碼如下:

[root@SZDB ~]# mysql -uroot -p123456 /root/temp.sql 
Logging to file '/tmp/temp.log' 
id      val 
1       jack 
2       robin 
3       mark 
Outfile disabled. 
 
#使用管道符調用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提示符下調用SQL

復制代碼 代碼如下:

[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腳本中變量輸入與輸出

復制代碼 代碼如下:

[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 
 
#以上腳本演示中,作拋磚引玉只用,對于輸出的結果不是很規(guī)整友好,需要進一步改善和提高。 

您可能感興趣的文章:
  • MySQL 最基本的SQL語法/語句
  • MySQL 創(chuàng)建主鍵,外鍵和復合主鍵的語句
  • MySql增加用戶、授權、修改密碼等語句
  • 淺談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基本語句小結

標簽:雅安 南充 通遼 隨州 西藏 青島 朝陽 延邊

巨人網(wǎng)絡通訊聲明:本文標題《Shell腳本中執(zhí)行sql語句操作mysql的5種方法》,本文關鍵詞  Shell,腳本,中,執(zhí)行,sql,語句,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Shell腳本中執(zhí)行sql語句操作mysql的5種方法》相關的同類信息!
  • 本頁收集關于Shell腳本中執(zhí)行sql語句操作mysql的5種方法的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    龙海市| 淳化县| 南丹县| 富阳市| 江山市| 南溪县| 萍乡市| 枣庄市| 城市| 永宁县| 新津县| 平顺县| 大新县| 五台县| 水富县| 宁晋县| 莲花县| 加查县| 大荔县| 石景山区| 登封市| 开江县| 南华县| 神木县| 洛南县| 昔阳县| 古交市| 博客| 英德市| 南平市| 苏尼特左旗| 寿宁县| 伊宁县| 樟树市| 兰州市| 蓬安县| 信丰县| 赫章县| 扎鲁特旗| 南昌市| 灵山县|