在公升級應用時,我們常常會遇到公升級資料庫的問題,這就涉及到sql指令碼的編寫。
一般我們會通過寫sql指令碼,然後將***.sql指令碼放到資料庫中進行source ***.sql
執行。本篇文章,我們可以通過寫shell指令碼來執行資料庫操作。
建立 test_sql.properties 作為shell指令碼的外部配置引數修改:
[andya@liunx01 sql_sh]$ vim test_sql.properties
# set parameters start
# 1 db name
dbname=
"db01"
# 2 the valueof net speeds and requests
netmaxspeeds=
500netrequests=
"test.t1"
# 3 database info
## mysql address
mysql_address=
"10.127.0.1"
## database name
mysql_database_name=
"db_test"
## 5.3 bdoc connect mysql user name
mysql_user=
"user01"
## 5.4 bdoc connect mysql user password
mysql_passwd=
"123456"
## 5.5 mysql engine
database_engine=mysql
建立shell指令碼test_sql.sh
[andya@liunx01 sql_sh]$ vim test_sql.sh
#!/bin/bash
starttime=$(date +
%y-%m-
%d\ %h:
%m:%s)
echo "【start to execute the script】, start time is: " $starttime >> test_sql_sh.log
# 1 read parameters
# ==
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
====
=echo "------ test_sql.properties start------"
>> test_sql_sh.log
source ./test_sql.properties
echo "parameters: cat test_sql.properties"
>> test_sql_sh.log
while read line
do echo $line >> test_sql_sh.log ;
done < test_sql.properties
echo "------ test_sql.properties end------"
>> test_sql_sh.log
# ==
====
====
====
====
====
====
====
====
====
====
====
====
====
====
*****==
# 2 update database
# ==
====
====
====
====
====
==testsql="
set @dbid
=(select id from $
.\`test_tb01\` where \`name\` = \"$\")
;insert into $
.\`test_tb02\` (\`name\`, \`db_id\` ,\`max_speeds\`, \`net_requests\`) values (
'$',
@dbid
,'$'
,'$');
"echo -e "\nsql: add hbase sql is: "$
>> test_sql_sh.log
id=$($
-h$-u$
-p$-d $
-e "$"
)echo "sql: modify db data successfully, and insert db id is: "$
>> test_sql_sh.log
endtime=`date +
"%y-%m-%d %h:%m:%s"`
echo "【execute the script end】, end time is: " $
>> test_sql_sh.log
echo -e "\n"
>> test_sql_sh.log
exit 0
./test_sql.sh
並且可以檢視到輸出日誌test_sql_sh.log
#!
/bin/sh
mysql_engine=`which mysql`
$-uroot -p123456 <>>test.log
use db01;
select * from tb01 where id =4;
eofexit 0
其中:
1)1>>test.log
是重定向標準輸出到test.log中,當然,也嘗試去掉1,也是可以輸出。
2)我們也可以使用2 >/dev/null
重定向來遮蔽錯誤資訊,2即為標準錯誤輸出,對於linux來說/dev/null
即為空裝置,輸入進去的資料即為丟棄。
3)eof表示後續輸入作為shell的輸入,直到下乙個eof出現,再返回主程序shell中。
編寫Linux的shell指令碼
把一些有關聯的linux命令,或者一組完成某一特定功能的linux命令,存放在了乙個檔案中,把這個檔案稱之為shell指令碼,該指令碼真正被稱之為shell指令碼,需要具備這麼幾個特點 需要能夠被bash能夠執行,就相當於在windows的可執行檔案.exe 需要為該指令碼提供乙個標識 在檔案的開頭...
linux 簡單shell指令碼編寫
前幾天學習了一些shell指令碼編寫,今天把它記下來。下面的指令碼是修改電腦的ip位址 子網掩碼 閘道器。bin bash 這句話是指定指令碼的直譯器是bash read p please input ipaddr ip read p這個語句就是通過鍵盤讓自己輸入要輸入的內容 read p plea...
編寫Shell指令碼
獲取變數的方式 1 echo path 2 echo 3 echo path 引數的提取 引數的個數 n 第n個引數 0 當前指令碼名稱 取出所有引數 shift 引數左移 執行過程 2 編寫指令碼內容 單獨講解 3 新增執行許可權 chmod a x abc.sh 4 當前目錄執行 abc.sh ...