麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Linux Shell > 正文

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

2020-07-27 19:12:40
字體:
來源:轉載
供稿:網友

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

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

復制代碼 代碼如下:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩视频在线观看免费 | 久久在线 | 婷婷中文字幕一区二区三区 | 欧美一级黄色网 | 欧美日本不卡 | 国产欧美在线观看不卡一 | 久久金品 | 欧美日韩大片在线观看 | 欧美日本一区二区 | 精品一区二区三区在线观看视频 | 特一级黄色毛片 | 康妮卡特欧美精品一区 | 国产精品视频一区二区三区四区五区 | 亚洲五码在线观看视频 | 亚洲91精品| 日本精品久久久一区二区三区 | 日本高清无遮挡 | 九九热在线视频观看 | 成人男男视频拍拍拍在线观看 | 一级毛片在线视频 | 极品一级片 | 小雪奶水翁胀公吸小说最新章节 | 黄网站免费入口 | 欧美精品免费一区二区三区 | 国产一区二区三区在线视频 | 成人免费在线视频播放 | 欧美精品一区二区三区在线 | 亚洲一区二区中文字幕在线观看 | 久久17| 少妇色诱麻豆色哟哟 | 久久久三级免费电影 | www.99热视频| 视频一区二区精品 | 韩国一大片a毛片 | 制服丝袜成人动漫 | 蜜桃视频在线播放 | 免费午夜视频在线观看 | 一级成人在线 | 国产69精品久久久久久久久久 | 12av电影 | 一分钟免费观看完整版电影 |