欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

對于自動化運維,諸如備份恢復(fù)之類的,DBA經(jīng)常需要將SQL語句封裝到shell腳本。本文描述了在Linux環(huán)境下mysql數(shù)據(jù)庫中,shell腳本下調(diào)用sql語句的幾種方法,供大家參考。對于腳本輸出的結(jié)果美化,需要進一步完善和調(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)用單獨的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ī)整友好,需要進一步改善和提高。 

相關(guān)文章

  • bash批量修改文件名稱的方法小結(jié)(增加,去除,修改后綴)

    bash批量修改文件名稱的方法小結(jié)(增加,去除,修改后綴)

    bash批量修改文件名稱的方法總結(jié),包括為文件增加后綴、修改文件名后綴、去除文件名后綴、修改文件名前綴,有需要的朋友可以參考下
    2013-02-02
  • Linux 中的Setfacl命令

    Linux 中的Setfacl命令

    setfacl命令可以用來細分linux下的文件權(quán)限。接下來通過本文給大家分享Linux 中的Setfacl命令,感興趣的朋友一起看看吧
    2017-09-09
  • Shell腳本實現(xiàn)自動安裝zookeeper

    Shell腳本實現(xiàn)自動安裝zookeeper

    這篇文章主要介紹了Shell腳本實現(xiàn)自動安裝zookeeper,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-01-01
  • Linux echo命令的使用及三種實現(xiàn)方式

    Linux echo命令的使用及三種實現(xiàn)方式

    這篇文章主要介紹了Linux echo命令的使用及三種實現(xiàn)方式,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • 一文詳解Linux權(quán)限的相關(guān)知識

    一文詳解Linux權(quán)限的相關(guān)知識

    Linux權(quán)限是用來管理文件和目錄訪問權(quán)限的機制,每個文件和目錄都有一個所有者和一個所屬組,同時也有針對所有者、所屬組和其他用戶的權(quán)限設(shè)置,本篇文章將講授Linux的權(quán)限相關(guān)的知識,需要的朋友可以參考下
    2023-09-09
  • shell sed命令的具體使用

    shell sed命令的具體使用

    本文主要介紹了shell sed命令的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 通過實例深入理解linux shell數(shù)組

    通過實例深入理解linux shell數(shù)組

    本文為大家介紹linxu shell中數(shù)組的相關(guān)知識,并舉了很多例子供參考,包括數(shù)組的復(fù)制,計算,刪除,替換等,是學(xué)習(xí)shell 數(shù)組的不可多得的好文章
    2013-02-02
  • Linux 中shell腳本設(shè)置開頭固定格式的實現(xiàn)方法

    Linux 中shell腳本設(shè)置開頭固定格式的實現(xiàn)方法

    這篇文章主要介紹了Linux 中shell腳本設(shè)置開頭固定格式的實現(xiàn)方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Linux命令創(chuàng)建日期文件夾或者文件的實例代碼

    Linux命令創(chuàng)建日期文件夾或者文件的實例代碼

    本文通過實例代碼給大家介紹了Linux命令創(chuàng)建日期文件夾或者文件的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • 關(guān)于ssh連不上問題的解決方法(必看)

    關(guān)于ssh連不上問題的解決方法(必看)

    下面小編就為大家?guī)硪黄P(guān)于ssh連不上問題的解決方法(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03

最新評論