最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2014年10月31日 10:30:35   投稿:junjie  
這篇文章主要介紹了Shell腳本中執(zhí)行sql語句操作mysql的5種方法,本文講解了將SQL語句直接嵌入到shell腳本文件中、命令行調(diào)用單獨(dú)的SQL文件、使用管道符調(diào)用SQL文件等方法,需要的朋友可以參考下

對(duì)于自動(dòng)化運(yùn)維,諸如備份恢復(fù)之類的,DBA經(jīng)常需要將SQL語句封裝到shell腳本。本文描述了在Linux環(huán)境下mysql數(shù)據(jù)庫中,shell腳本下調(diào)用sql語句的幾種方法,供大家參考。對(duì)于腳本輸出的結(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 
 
#以上腳本演示中,作拋磚引玉只用,對(duì)于輸出的結(jié)果不是很規(guī)整友好,需要進(jìn)一步改善和提高。 

相關(guān)文章

  • 詳解Shell $*和$@之間的區(qū)別

    詳解Shell $*和$@之間的區(qū)別

    這篇文章主要介紹了詳解Shell $*和$@之間的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Linux?Shell任務(wù)控制的實(shí)現(xiàn)示例

    Linux?Shell任務(wù)控制的實(shí)現(xiàn)示例

    本文主要介紹了Linux?Shell任務(wù)控制的實(shí)現(xiàn)示例,包括向腳本發(fā)送信號(hào)、修改腳本的優(yōu)先級(jí)以及在腳本運(yùn)行時(shí)從暫停切換到運(yùn)行模式,感興趣的可以了解一下
    2024-01-01
  • 利用管道實(shí)現(xiàn)sudo命令免輸入密碼的方法

    利用管道實(shí)現(xiàn)sudo命令免輸入密碼的方法

    這篇文章主要介紹了利用管道實(shí)現(xiàn)sudo命令免輸入密碼的方法,即不輸入密碼執(zhí)行sudo命令方法,需要的朋友可以參考下
    2014-03-03
  • Linux Shell獲取文件夾下的文件名方法

    Linux Shell獲取文件夾下的文件名方法

    今天小編就為大家分享一篇Linux Shell獲取文件夾下的文件名方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Shell中去除字符串前后空格的方法

    Shell中去除字符串前后空格的方法

    今天小編就為大家分享一篇關(guān)于Shell中去除字符串前后空格的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Window11?WSL2?添加靜態(tài)IP的腳本

    Window11?WSL2?添加靜態(tài)IP的腳本

    這篇文章主要介紹了Window11?WSL2?添加靜態(tài)IP的腳本方法,通過一段腳本給?Windows?端的"vEthernet?(WSL)"加了IPv4?172.18.16.1,給?Linux?端的?eth0?添加?IPv4?172.18.16.1,在使用前,請(qǐng)按需調(diào)整網(wǎng)絡(luò)接口的名稱和IP地址,需要的朋友可以參考下
    2023-01-01
  • Linux中popen函數(shù)的作用小結(jié)

    Linux中popen函數(shù)的作用小結(jié)

    popen()函數(shù)通過創(chuàng)建一個(gè)管道,調(diào)用fork()產(chǎn)生一個(gè)子進(jìn)程,執(zhí)行一個(gè)shell以運(yùn)行命令來開啟一個(gè)進(jìn)程。這篇文章重點(diǎn)給大家介紹Linux中popen函數(shù)的作用,感興趣的朋友一起看看吧
    2018-05-05
  • Linux查看日志文件寫入速度的4種方法詳解

    Linux查看日志文件寫入速度的4種方法詳解

    有時(shí),我們需要查看某個(gè)文件的增長速度,如日志文件,以此來感受系統(tǒng)的負(fù)載情況,因?yàn)橐话闱闆r下,日志寫入越快,說明系統(tǒng)負(fù)載越重。本文總結(jié)了Linux中查看日志增長速度的幾種方法,需要的可以參考一下
    2022-06-06
  • Shell+Curl網(wǎng)站狀態(tài)檢查腳本 抓出無法訪問的站點(diǎn)

    Shell+Curl網(wǎng)站狀態(tài)檢查腳本 抓出無法訪問的站點(diǎn)

    這篇文章主要介紹了Shell+Curl網(wǎng)站狀態(tài)檢查腳本 抓出無法訪問的站點(diǎn),需要的朋友可以參考下
    2015-10-10
  • Linux上安裝和卸載rpm軟件包的方法

    Linux上安裝和卸載rpm軟件包的方法

    這篇文章主要介紹了Linux上安裝和卸載rpm軟件包的方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11

最新評(píng)論

离岛区| 焦作市| 石楼县| 民权县| 滁州市| 泾川县| 铜山县| 乌兰浩特市| 盘锦市| 辽阳市| 沛县| 凉城县| 乌鲁木齐县| 宁化县| 寿宁县| 宜君县| 衡山县| 古蔺县| 商南县| 额尔古纳市| 大石桥市| 山西省| 博乐市| 白朗县| 德庆县| 淮安市| 乌拉特前旗| 镇江市| 泾川县| 四子王旗| 涿州市| 内江市| 宝应县| 莱芜市| 阳山县| 额济纳旗| 上蔡县| 二连浩特市| 正阳县| 德钦县| 芮城县|