利用shell指令碼批量建立資料庫以及資料表
阿新 • • 發佈:2019-01-26
在linux終端批量建立資料庫db的shell指令碼如下:
#!/bin/bash
#批量建立資料庫
user=root
password=handdba
socket=/var/lib/mysql/mysql.sock
mycmd="mysql -u$user -p$password -S $socket"
for((i=13;i<73;i++))
do
$mycmd -e "create database db$i"
done
在指定的資料庫去批量執行某目錄下的.sql檔案的shell指令碼如下:
#!/bin/bash #execute all script in specified directory MYDATE=`date +%F'-'%T'-'%w` MYSQL_PATH=/u01/scripts #指定的目錄 LOG_FILE=/u01/scripts/exec_${MYDATE}.log confirm= db_name= db_pass=handdba for file in ${MYSQL_PATH}/* do if [ -f "$file" ] ; then postfix=`echo $file | awk -F'.' '{print "."$NF}'` if [ $postfix = ".sql" ] ; then if [ ! $db_name ] ; then #如果沒有指定資料庫 read -p "請輸入資料庫名:" db_name read -p "你輸入的資料名是【$db_name】,確認繼續請輸入--yes--: " confirm fi if [ "$confirm" = "yes" ] && [ -n $confirm ] ; then if [ ! $db_pass ] ; then #如果沒有設定密碼 stty -echo #密碼輸入保護關閉顯示 read -p "請輸入資料庫密碼:" db_pass echo -e "\n" stty echo fi mysql -uroot -p$db_pass -P3306 --default-character-set=utf8 ${db_name} < $file >& error.log echo $file echo -e "\n===========$file=============\n" >>${LOG_FILE} cat error.log >>${LOG_FILE} #輸出執行日誌 error=`grep ERROR error.log` #讀取錯誤日誌資訊 if [ -n "$error" ] ; then #如果有錯誤就退出程式 echo $error exit fi else echo "您已經取消操作!" exit fi fi fi done