日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

linux mysql 写shell_Linux—编写shell脚本操作数据库执行sql

發(fā)布時間:2023/12/2 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux mysql 写shell_Linux—编写shell脚本操作数据库执行sql 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

修改數(shù)據(jù)庫數(shù)據(jù)

在升級應(yīng)用時,我們常常會遇到升級數(shù)據(jù)庫的問題,這就涉及到sql腳本的編寫。

一般我們會通過寫sql腳本,然后將xxx.sql腳本放到數(shù)據(jù)庫中進行source xxx.sql執(zhí)行。本篇文章,我們可以通過寫shell腳本來執(zhí)行數(shù)據(jù)庫操作。

配置文件

創(chuàng)建 test_sql.properties 作為shell腳本的外部配置參數(shù)修改:

[andya@liunx01 sql_sh]$ vim test_sql.properties

# set parameters start

# 1 db name

dbName="db01"

# 2 the valueof net speeds and requests

netMaxSpeeds=500

netRequests="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腳本

創(chuàng)建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 ${MYSQL_DATABASE_NAME}.\`test_tb01\` WHERE \`NAME\` = \"${dbName}\");

INSERT INTO ${MYSQL_DATABASE_NAME}.\`test_tb02\` (\`NAME\`, \`DB_ID\` ,\`MAX_SPEEDS\`, \`NET_REQUESTS\`) VALUES ('${dbName}', @dbId, '${netMaxSpeeds}', '${netRequests}');

"

echo -e "\nSql: add hbase sql is: "${testSql} >> test_sql_sh.log

id=$(${DATABASE_ENGINE} -h${MYSQL_ADDRESS} -u${MYSQL_USER} -p${MYSQL_PASSWD} -D ${MYSQL_DATABASE_NAME} -e "${testSql}")

echo "Sql: Modify db data successfully, and insert db id is: "${id} >> test_sql_sh.log

endtime=`date +"%Y-%m-%d %H:%M:%S"`

echo "【Execute the script end】, end time is: " ${endtime} >> test_sql_sh.log

echo -e "\n" >> test_sql_sh.log

exit 0

腳本執(zhí)行

./test_sql.sh

并且可以查看到輸出日志test_sql_sh.log

另一種連接方式(待研究)

#!/bin/sh

mysql_engine=`which mysql`

${mysql_engine} -uroot -p123456 <>test.log

use db01;

select * from tb01 where id = 4;

EOF

exit 0

其中:

1)1>>test.log是重定向標(biāo)準(zhǔn)輸出到test.log中,當(dāng)然,也嘗試去掉1,也是可以輸出。

2)我們也可以使用2 >/dev/null重定向來屏蔽錯誤信息,2即為標(biāo)準(zhǔn)錯誤輸出,對于linux來說/dev/null即為空設(shè)備,輸入進去的數(shù)據(jù)即為丟棄。

3)EOF表示后續(xù)輸入作為shell的輸入,直到下一個EOF出現(xiàn),再返回主進程shell中。

總結(jié)

以上是生活随笔為你收集整理的linux mysql 写shell_Linux—编写shell脚本操作数据库执行sql的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。