shell指令碼批量修改mysql表引擎

2021-08-30 02:33:12 字數 1112 閱讀 1823

進入到mysql的資料目錄,例如/data

#進入到data目錄,如果不進入打絕對路徑會帶著/data/表名

cd /data

#列出所有表的資料結構檔案,然後去掉.frm,追加到檔案中就是所有的表名了

ls *.frm |awk -f'.frm' '' > /root/all_tables.txt

當然,你也可以用另一種方式,直接從資料庫複製貼上

/usr/local/mysql/bin/mysql -uroot -p'password' -e "use dbname;show tables" > all_tables.txt

#宣告是shell指令碼

#!/bin/bash

#列出所有表名

a=`cat /root/all_tables.txt`

#迴圈每乙個表名

for i in $a

#開始迴圈

do#獲取當前表的引擎名稱

engine_name=`/usr/local/webserver/mysql/bin/mysql -uroot -p'password' -e "use phpcmsdata;show create table $i;"|grep 'engine'|awk -f'=' ''|awk ''`

#輸出當前表的引擎名稱

echo $engine_name

#判斷,如果當前表的引擎名稱是myisam

if [[ $engine_name == 'myisam' ]];then

#輸出修改引擎中

echo "modifying engine....."

#將表引擎修改為innodb

/usr/local/webserver/mysql/bin/mysql -uroot -p'password' -e "use phpcmsdata;alter table $i engine = innodb;"

#修改完之後輸出成功  

echo "success...."

#若當前表引擎不是myisam

else

#輸出當前表是innodb

echo "$i  is innodb...." 

#結束判斷

fi#完成迴圈

done

批量修改檔案字尾 shell指令碼

ps 當前目錄下,無遞迴查詢,其中hz1為修改前的字尾,hz2為修改後的 bin bash hz1 1 hz2 2if 1 then hz1 repo hz2 bak echo 預設原始檔字尾為 repo 修改後字尾為 bak fipwd pwd echo pwd if pwd then echo ...

shell指令碼 批量修改檔名

參考鏈結1 shell指令碼 批量修改檔名 刪除檔名中字元 參考鏈結2 linux shell 字串操作詳解 長度,讀取,替換,擷取,連線,對比,刪除,位置 參考鏈結3 每天乙個linux命令 21 find命令之xargs 參考鏈結5 shell 學習第十天 sed 查詢與替換 批量改名,增加字元...

shell指令碼批量修改檔名稱

示例 filename home mnt test.txt 用 分別替換獲得不同的值 拿掉第一條 及其左邊的字串 home mnt test.txt 拿掉最後一條 及其左邊的字串 test.txt 拿掉第乙個 及其左邊的字串 test.txt 拿掉最後乙個 及其左邊的字串 txt 拿掉最後條 及其右...