shell指令碼執行sql檔案及語句
阿新 • • 發佈:2018-11-22
由於經常操作資料庫,遇到頻繁建表、加欄位、索引、修改資料等問題,大多是操作多個數據庫,sql檔案或語句不固定,最後選擇shell指令碼來執行
eg:
1.多庫建相同的表
#/bin/bash host='127.0.0.1' dbUser='root' dbPassword='' sql_file='test.sql' city_array=('bj' 'sh' 'tj') type="test" for city in ${city_array[@]}; do dbName=${type}'_'${city} echo $dbName #多庫建表 mysql -h $host -u $dbUser -p$dbPassword -f $dbName -e "source $sql_file"; done
2.多庫同表新建欄位
#/bin/bash host='127.0.0.1' dbUser='root' dbPassword='' city_array=('bj' 'sh' 'tj') type="test" for city in ${city_array[@]}; do dbName=${type}'_'${city} echo $dbName #多庫增加欄位 mysql -h $host -u $dbUser -p$dbPassword -e " use $dbName; ALTER TABLE test_table1 ADD refresh_time int(11) DEFAULT '0' COMMENT '重新整理時間'; notee quit"; done
3.多庫同表同欄位修改內容
#/bin/bash host='127.0.0.1' dbUser='root' dbPassword='' city_array=('bj' 'sh' 'tj') type="test" for city in ${city_array[@]}; do dbName=${type}'_'${city} echo $dbName #多庫修改欄位值 mysql -h $host -u $dbUser -p$dbPassword -e " use $dbName; update test_table1 set contents=REPLACE(contents,'////','//') where contents like '//%'; notee quit"; done