国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

將MySQL help contents的內容有層次的輸出方法推薦

2024-07-24 12:45:05
字體:
來源:轉載
供稿:網(wǎng)友

經(jīng)常會遇到這種情況,在一個不能上網(wǎng)的環(huán)境通過MySQL客戶端登錄數(shù)據(jù)庫,想執(zhí)行一個操作,卻忘了操作的具體語法,各種不方便。

其實,MySQL數(shù)據(jù)庫內置了幫助文檔,通過help contents即可查看。

如下所示:

可見,該文檔涵蓋了數(shù)據(jù)庫操作的大部分主題。

文檔分為以上幾大類,每個大類又包括更小粒度的類,類最后有具體的topic組成。

那么這之間的層級關系如何呢?

昨天想執(zhí)行一個操作

mysql> backup table emp to '/tmp/mysqlbackup';

因為這個backup操作以前沒有使用過,準備用MySQL自帶的幫助文檔來查看具體的用法。本來這個命令所屬的類別就有點模糊,譬如Administration和Utility都有可能。最后找了一通,還是沒有找到。

想了想,這樣查看幫助文檔確實沒有太大的效率,如果知道這之間的層級關系就好辦了。

于是,動手寫了個腳本,可直觀的顯示幫助文檔中大類與小類,小類與topic之間的關系。

具體如下:

#!/bin/bash#所有操作都是在/tmp/test中操作,因為中間新建了很多臨時文件,方便后續(xù)的刪除。mkdir /tmp/test#獲取上圖的內容重定向到/tmp/test/test.txt文件中mysql -uroot -p123456 -e "help contents " > /tmp/test/test.txt#定義輸出的格式,/t輸出tab,/b相當于backspace一個空格,參考了tree命令的輸出方式。format="|/t/b"#刪除第一行和最后一行sed -i '1d;$d' /tmp/test/test.txtcd /tmp/test#引入number的作用在于后續(xù)格式的輸出number=0#后續(xù)用了遞歸調用,這里定義的是函數(shù)function recursive(){filename=$1number=$[$number+1]while read linedo#name要做為文件名,譬如Account Management,利用tr函數(shù)是去掉字符中間的空格name=`echo $line|tr -d [:blank:]`#輸出每個分類中的內容,可能是topic,可能是categoriesmysql -uroot -p123456 -e "help $line" > $name#取輸出文件的第一行的內容,如果是具體的topic,則第一行的內容為:Name: 'ALTER USER',不然就還是categories,需要遞歸調用firstline=`head -1 $name`#整個邏輯比較復雜的有兩類,一個是Numeric Functions,另一個是PLUGINS。先說PLUGINS,一般對于一個具體的topic,它的輸出類似于Name: 'ALTER USER',而PLUGINS#對應的輸出卻是Name: 'SHOW PLUGINS',所以下面的判斷語句多了一個"$firstline" = "Name: 'SHOW PLUGINS'",針對的即是PLUGINS。另一比較復雜的是Numeric Functions#它下面的topic有除號“/”,而這基本上是不能作為文件名的。所以在下面的判斷邏輯中,如果遇到Numeric Functions,就直接打印出該類中的topic,而不進行Name: 'ALTER USER'這樣的判斷if [ "$firstline" = "Name: '$line'" -o "$firstline" = "Name: 'SHOW PLUGINS'" ];thenfor i in `seq $[$number-1]`do echo -ne $formatdoneecho "├── $line"else#如果不是topic,則代表是categories,可遞歸進行判斷,唯一的例外就是Numeric Functions#下面的echo "├── $line"打印出的是categories的名字for i in `seq $[$number-1]`do echo -ne $formatdoneecho "├── $line"#遇到Numeric Functions,就直接打印出該類中的topicif [ "$line" = "Numeric Functions" ];thensed -i '1d;$d' $namewhile read functions dofor i in `seq $number`do echo -ne $formatdoneecho "├── $functions"done < $nameelse#其它的categories,遞歸調用該函數(shù)進行判斷。sed -i '1d;$d' $namerecursive $namenumber=$[$number-1]fifidone < $filename}#主函數(shù)recursive /tmp/test/test.txt#處理完畢,刪除文件夾rm -rf /tmp/test
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 广水市| 汕尾市| 布尔津县| 磐石市| 民县| 潼关县| 万荣县| 辽阳县| 湖州市| 肇庆市| 灵川县| 海盐县| 高台县| 贵港市| 邢台县| 鲁甸县| 长泰县| 丰台区| 湘潭市| 昌江| 井冈山市| 哈巴河县| 灵璧县| 天津市| 芮城县| 江源县| 万安县| 江津市| 邵武市| 凤城市| 泰顺县| 民权县| 长乐市| 如皋市| 金坛市| 天峨县| 措美县| 武宁县| 佛冈县| 确山县| 监利县|