1. 程式人生 > >利用shell指令碼批量建立資料庫以及資料表

利用shell指令碼批量建立資料庫以及資料表

在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