濮阳杆衣贸易有限公司

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

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

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

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

1、將SQL語(yǔ)句直接嵌入到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 
 
#以上腳本演示中,作拋磚引玉只用,對(duì)于輸出的結(jié)果不是很規(guī)整友好,需要進(jìn)一步改善和提高。 

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

標(biāo)簽:雅安 南充 通遼 隨州 西藏 青島 朝陽(yáng) 延邊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Shell腳本中執(zhí)行sql語(yǔ)句操作mysql的5種方法》,本文關(guān)鍵詞  Shell,腳本,中,執(zhí)行,sql,語(yǔ)句,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Shell腳本中執(zhí)行sql語(yǔ)句操作mysql的5種方法》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Shell腳本中執(zhí)行sql語(yǔ)句操作mysql的5種方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    德庆县| 屯门区| 普安县| 吐鲁番市| 鹤峰县| 洛宁县| 汉沽区| 亚东县| 徐汇区| 楚雄市| 金坛市| 康定县| 宾川县| 扎兰屯市| 容城县| 东平县| 苏尼特左旗| 大厂| 南昌市| 南部县| 康马县| 芒康县| 墨竹工卡县| 海林市| 龙井市| 嵊州市| 柳林县| 顺义区| 平陆县| 河间市| 大方县| 桦南县| 天祝| 汕头市| 华容县| 普兰店市| 四子王旗| 开江县| 咸阳市| 敖汉旗| 胶南市|