使用shell指令碼清空mysql指定的多張表資料

2021-09-24 13:24:57 字數 2613 閱讀 6634

1.指令碼

#!/bin/bash

#program

##定義連線變數

host_str=172.16.16.64

port=3306

username=admin

password=admin

database=cmom_trunk_1

mysql_conf=$(cat ./config/mysql.conf)

#conn_array=$(awk '' ./config/mysql.conf)

echo "資料庫連線資訊:---------------------------"

#echo $mysql_conf

sleep 1

conns=($)

#echo $conns

if [ -n "$" ]

then

host_str=$

echo "資料庫位址為:$"

fiif [ -n "$" ]

then

port=$

echo "資料庫埠為:$"

fiif [ -n "$" ]

then

username=$

echo "使用者名稱稱為:$"

fiif [ -n "$" ]

then

password=$

echo "使用者密碼為:*****"

fiif [ -n "$" ]

then

database=$

echo "資料庫名稱為:$"

finotdel=$(cat ./config/notdel)

sleep 1

notdel_array=($)

sleep 1

echo "開始連線資料庫........."

#checkdown data

$(mysql -h$ -p$ -u$ -p$ $ -e "set names utf8;show tables;" > table_info)

sleep 3

echo "資料連線成功..........."

tables=$(cat table_info)

tab_array=($)

unset tab_array[0]

sleep 1

echo "載入配置檔案...."

sleep 1

echo "開始解析配置檔案...."

#定義表清空語句

tab_del_cmd=''

delete_cmd='delete from'

i=0#統計表的總數

count_sum=0

#統計清空表的個數

count_clean=0

#統計跳過錶的個數

count_jump=0

is_del=true

for el in $

doecho ----$el-----

not_del=0

let count_sum+=1

for tab in $

doif [ "$tab" == "$el" ]

then

let count_jump+=1

not_del=1

break

fidone

if [ $not_del -eq 1 ]

then

echo --跳過$

continue

fi#拼接sql

if [ $i -eq 0 ]

then

tab_del_cmd="$delete_cmd $el;"

else

tab_del_cmd="$tab_del_cmd $delete_cmd $el;"

filet i+=1

let count_clean+=1

done

sleep 1

echo "解析配置檔案結束....."

sleep 1

echo $tab_del_cmd > ./tab_del_sql

echo "開始清空資料庫表資料------"

$(mysql -h$ -p$ -u$ -p$ $ -e "$tab_del_cmd" > tab_del.log)

sleep 5

echo "查詢到表總數:$,清空表的個數:$,跳過錶總數:$" >> tab_del.log

echo "執行完畢,詳情檢視日誌檔案 tab_del.log"

2.配置檔案

mysql.conf  配置連線資訊,執行時將後邊備註刪除,notdel也是

172.16.*.* //資料庫位址

3306         //埠號

root           //使用者名稱

root           //密碼

cmom_trunk_1    //資料庫名稱

notdel  標註不被清空的表

bd_user     //表名

使用Shell指令碼刪除 清空日誌檔案

話不多少,直接上 bin bash workdir home tax punish ret log txt 可填寫多個路徑,用空格隔開 查詢日誌檔案 for wdir in do echo filepath is wdir if wdir then filestr find wdir log ech...

使用Shell指令碼刪除 清空日誌檔案

話不多少,直接上 bin bash workdir home tax punish ret log txt 可填寫多個路徑 用空格隔開 查詢日誌檔案 for wdir in doecho filepath is wdir if wdir then filestr find wdir log echo...

shell指令碼清空系統message日誌

1 bin bash 2 此指令碼用來清空系統message日誌檔案 3 author wyf date 16 10 30 4 log dir var log 5 root uid 0 6 必須系統管理員許可權才能執行 7 if uid ne 8 then 9 echo must be root t...