Linux 編寫shell指令碼運算元據庫執行sql

2021-10-04 03:20:17 字數 3188 閱讀 7991

在公升級應用時,我們常常會遇到公升級資料庫的問題,這就涉及到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 ...