1. 程式人生 > >shell指令碼執行sql檔案及語句

shell指令碼執行sql檔案及語句

由於經常操作資料庫,遇到頻繁建表、加欄位、索引、修改資料等問題,大多是操作多個數據庫,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