如何将MySQL help contents的内容有层次的输出

如何将MySQL help contents的内容有层次的输出,第1张

概述经常会遇到这种情况,在一个不能上网的环境通过MySQL客户端登录数据库,想执行一个 *** 作,却忘了 *** 作的具体语法,各种不方便。 其实,MySQL数据库内置了帮助文档,通过help contents即可查看

经常会遇到这种情况,在一个不能上网的环境通过MysqL客户端登录数据库,想执行一个 *** 作,却忘了 *** 作的具体语法,各种不方便。

其实,MysqL数据库内置了帮助文档,通过help contents即可查看。

如下所示:

可见,该文档涵盖了数据库 *** 作的大部分主题。

文档分为以上几大类,每个大类又包括更小粒度的类,类最后有具体的topic组成。

那么这之间的层级关系如何呢?

昨天想执行一个 *** 作

MysqL> backup table emp to '/tmp/MysqLbackup';

因为这个backup *** 作以前没有使用过,准备用MysqL自带的帮助文档来查看具体的用法。本来这个命令所属的类别就有点模糊,譬如administration和Utility都有可能。最后找了一通,还是没有找到。

想了想,这样查看帮助文档确实没有太大的效率,如果知道这之间的层级关系就好办了。

于是,动手写了个脚本,可直观的显示帮助文档中大类与小类,小类与topic之间的关系。

具体如下:

#!/bin/bash#所有 *** 作都是在/tmp/test中 *** 作,因为中间新建了很多临时文件,方便后续的删除。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的作用在于后续格式的输出number=0#后续用了递归调用,这里定义的是函数function recursive(){filename=$1number=$[$number+]while read linedo#name要做为文件名,譬如Account Management,利用tr函数是去掉字符中间的空格name=`echo $line|tr -d [:blank:]`#输出每个分类中的内容,可能是topic,可能是categorIEsMysqL -uroot -p123456 -e help $line" > $name#取输出文件的第一行的内容,如果是具体的topic,则第一行的内容为:name: ALTER USER',不然就还是categorIEs,需要递归调用firstline=`head - $name`#整个逻辑比较复杂的有两类,一个是Numeric Functions,另一个是PLUGINS。先说PLUGINS,一般对于一个具体的topic,它的输出类似于name: ,而PLUGINS#对应的输出却是name: SHOW PLUGINS',所以下面的判断语句多了一个$firstline" = name: 'SHOW PLUGINS',针对的即是PLUGINS。另一比较复杂的是Numeric Functions#它下面的topic有除号“/”,而这基本上是不能作为文件名的。所以在下面的判断逻辑中,如果遇到Numeric Functions,就直接打印出该类中的topic,而不进行name: 这样的判断if [ name: '$line'" -o " ];thenfor i in `seq $[$number-]`do  echo -ne $formatdoneecho ├── $line"else#如果不是topic,则代表是categorIEs,可递归进行判断,唯一的例外就是Numeric Functions#下面的echo 打印出的是categorIEs的名字#遇到Numeric Functions,就直接打印出该类中的topic$lineNumeric Functionsthen $name read functions doseq $number`├── $functions"done < $name#其它的categorIEs,递归调用该函数进行判断。 $namerecursive $namenumber=$[$number-fi $filename}#主函数recursive /tmp/test/test.txt#处理完毕,删除文件夹rm -rf /tmp/test

 

因MysqL客户端登录数据库的时候,直接指定了密码,如果直接执行的话,会输出很多“Warning: Using a password on the command line interface can be insecure.”,

可重定向到一个文件

# sh 2.sh > 1.txt 

最后文件中的结果如下:

├── Account Management|      ├── ALTER USER|      ├── CREATE USER|      ├── DROP USER|      ├── GRANT|      ├── REname USER|      ├── REVOKE|      ├── SET PASSWORD├── administration|      ├── binlog|      ├── CACHE INDEX|      ├── FLUSH|      ├── FLUSH query CACHE|      ├── HELP COMMAND|      ├── KILL|      ├── LOAD INDEX|      ├── reset|      ├── SET|      ├── SHOW|      ├── SHOW AUTHORS|      ├── SHOW BINARY LOGS|      ├── SHOW binlog EVENTS|      ├── SHOW CHaraCTER SET|      ├── SHOW ColLATION|      ├── SHOW ColUMNS|      ├── SHOW CONTRIBUTORS|      ├── SHOW CREATE DATABASE|      ├── SHOW CREATE EVENT|      ├── SHOW CREATE FUNCTION|      ├── SHOW CREATE PROCEDURE|      ├── SHOW CREATE table|      ├── SHOW CREATE TRIGGER|      ├── SHOW CREATE VIEW|      ├── SHOW DATABASES|      ├── SHOW ENGINE|      ├── SHOW ENGInes|      ├── SHOW ERRORS|      ├── SHOW EVENTS|      ├── SHOW FUNCTION CODE|      ├── SHOW FUNCTION STATUS|      ├── SHOW GRANTS|      ├── SHOW INDEX|      ├── SHOW MASTER STATUS|      ├── SHOW OPEN tableS|      ├── SHOW PLUGINS|      ├── SHOW PRIVILEGES|      ├── SHOW PROCEDURE CODE|      ├── SHOW PROCEDURE STATUS|      ├── SHOW PROCESSList|      ├── SHOW PROfile|      ├── SHOW PROfileS|      ├── SHOW RELAYLOG EVENTS|      ├── SHOW SLAVE HOSTS|      ├── SHOW SLAVE STATUS|      ├── SHOW STATUS|      ├── SHOW table STATUS|      ├── SHOW tableS|      ├── SHOW TRIGGERS|      ├── SHOW VARIABLES|      ├── SHOW WARNINGS├── Compound Statements|      ├── BEGIN END|      ├── CASE STATEMENT|      ├── CLOSE|      ├── DECLARE CONDITION|      ├── DECLARE CURSOR|      ├── DECLARE HANDLER|      ├── DECLARE VARIABLE|      ├── FETCH|      ├── GET DIAGNOSTICS|      ├── IF STATEMENT|      ├── IteraTE|      ├── LABELS|      ├── LEAVE|      ├── LOOP|      ├── OPEN|      ├── REPEAT LOOP|      ├── RESIGNAL|      ├── RETURN|      ├── SIGNAL|      ├── WHILE├── Data DeFinition|      ├── ALTER DATABASE|      ├── ALTER EVENT|      ├── ALTER FUNCTION|      ├── ALTER LOGfile GROUP|      ├── ALTER PROCEDURE|      ├── ALTER SERVER|      ├── ALTER table|      ├── ALTER tableSPACE|      ├── ALTER VIEW|      ├── CONSTRAINT|      ├── CREATE DATABASE|      ├── CREATE EVENT|      ├── CREATE FUNCTION|      ├── CREATE INDEX|      ├── CREATE LOGfile GROUP|      ├── CREATE PROCEDURE|      ├── CREATE SERVER|      ├── CREATE table|      ├── CREATE tableSPACE|      ├── CREATE TRIGGER|      ├── CREATE VIEW|      ├── DROP DATABASE|      ├── DROP EVENT|      ├── DROP FUNCTION|      ├── DROP INDEX|      ├── DROP PROCEDURE|      ├── DROP SERVER|      ├── DROP table|      ├── DROP tableSPACE|      ├── DROP TRIGGER|      ├── DROP VIEW|      ├── REname table|      ├── TruncATE table├── Data Manipulation|      ├── CALL|      ├── DELETE|      ├── DO|      ├── DUAL|      ├── HANDLER|      ├── INSERT|      ├── INSERT DELAYED|      ├── INSERT SELECT|      ├── JOIN|      ├── LOAD DATA|      ├── LOAD XML|      ├── REPLACE|      ├── SELECT|      ├── UNION|      ├── UPDATE├── Data Types|      ├── auto_INCREMENT|      ├── BIGINT|      ├── BINARY|      ├── BIT|      ├── BLOB|      ├── BLOB DATA TYPE|      ├── BOolEAN|      ├── CHAR|      ├── CHAR BYTE|      ├── DATE|      ├── DATETIME|      ├── DEC|      ├── DECIMAL|      ├── DOUBLE|      ├── DOUBLE PRECISION|      ├── ENUM|      ├── float|      ├── INT|      ├── INTEGER|      ├── LONGBLOB|      ├── LONGTEXT|      ├── MEDIUMBLOB|      ├── MEDIUMINT|      ├── MEDIUMTEXT|      ├── SET DATA TYPE|      ├── SMALliNT|      ├── TEXT|      ├── TIME|      ├── TIMESTAMP|      ├── TINYBLOB|      ├── tinyint|      ├── TINYTEXT|      ├── VARBINARY|      ├── VARCHAR|      ├── YEAR DATA TYPE├── Functions|      ├── Bit Functions|      |       ├── &|      |       ├── <<|      |       ├── >>|      |       ├── BIT_COUNT|      |       ├── ^|      |       ├── ||      |       ├── ~|      ├── Comparison operators|      |       ├── !=|      |       ├── <|      |       ├── <=|      |       ├── <=>|      |       ├── =|      |       ├── >|      |       ├── >=|      |       ├── BETWEEN AND|      |       ├── COALESCE|      |       ├── GREATEST|      |       ├── IN|      |       ├── INTERVAL|      |       ├── IS|      |       ├── IS NOT|      |       ├── IS NOT NulL|      |       ├── IS NulL|      |       ├── ISNulL|      |       ├── LEAST|      |       ├── NOT BETWEEN|      |       ├── NOT IN|      ├── Control flow functions|      |       ├── CASE OPERATOR|      |       ├── IF FUNCTION|      |       ├── IFNulL|      |       ├── NulliF|      ├── Date and Time Functions|      |       ├── ADDDATE|      |       ├── ADDTIME|      |       ├── CONVERT_TZ|      |       ├── CURDATE|      |       ├── CURRENT_DATE|      |       ├── CURRENT_TIME|      |       ├── CURRENT_TIMESTAMP|      |       ├── CURTIME|      |       ├── DATE FUNCTION|      |       ├── DATEDIFF|      |       ├── DATE_ADD|      |       ├── DATE_FORMAT|      |       ├── DATE_SUB|      |       ├── DAY|      |       ├── DAYname|      |       ├── DAYOFMONTH|      |       ├── DAYOFWEEK|      |       ├── DAYOFYEAR|      |       ├── EXTRACT|      |       ├── FROM_DAYS|      |       ├── FROM_UNIXTIME|      |       ├── GET_FORMAT|      |       ├── HOUR|      |       ├── LAST_DAY|      |       ├── LOCALTIME|      |       ├── LOCALTIMESTAMP|      |       ├── MAKEDATE|      |       ├── MAKETIME|      |       ├── MICROSECOND|      |       ├── MINUTE|      |       ├── MONTH|      |       ├── MONTHname|      |       ├── Now|      |       ├── PERIOD_ADD|      |       ├── PERIOD_DIFF|      |       ├── QUARTER|      |       ├── SECOND|      |       ├── SEC_TO_TIME|      |       ├── STR_TO_DATE|      |       ├── SUBDATE|      |       ├── SUBTIME|      |       ├── SYSDATE|      |       ├── TIME FUNCTION|      |       ├── TIMEDIFF|      |       ├── TIMESTAMP FUNCTION|      |       ├── TIMESTAMPADD|      |       ├── TIMESTAMPDIFF|      |       ├── TIME_FORMAT|      |       ├── TIME_TO_SEC|      |       ├── TO_DAYS|      |       ├── TO_SECONDS|      |       ├── UNIX_TIMESTAMP|      |       ├── UTC_DATE|      |       ├── UTC_TIME|      |       ├── UTC_TIMESTAMP|      |       ├── WEEK|      |       ├── WEEKDAY|      |       ├── WEEKOFYEAR|      |       ├── YEAR|      |       ├── YEARWEEK|      ├── Encryption Functions|      |       ├── AES_DECRYPT|      |       ├── AES_ENCRYPT|      |       ├── COMPRESS|      |       ├── DECODE|      |       ├── DES_DECRYPT|      |       ├── DES_ENCRYPT|      |       ├── ENCODE|      |       ├── ENCRYPT|      |       ├── MD5|      |       ├── olD_PASSWORD|      |       ├── PASSWORD|      |       ├── RANDOM_BYTES|      |       ├── SHA1|      |       ├── SHA2|      |       ├── UNCOMPRESS|      |       ├── UNCOMpressed_LENGTH|      |       ├── VALIDATE_PASSWORD_STRENGTH|      ├── information Functions|      |       ├── BENCHMARK|      |       ├── CHARSET|      |       ├── COERCIBIliTY|      |       ├── ColLATION|      |       ├── CONNECTION_ID|      |       ├── CURRENT_USER|      |       ├── DATABASE|      |       ├── FOUND_ROWS|      |       ├── LAST_INSERT_ID|      |       ├── ROW_COUNT|      |       ├── SCHEMA|      |       ├── SESSION_USER|      |       ├── SYstem_USER|      |       ├── USER|      |       ├── VERSION|      ├── Logical operators|      |       ├── !|      |       ├── AND|      |       ├── ASSIGN-EQUAL|      |       ├── ASSIGN-VALUE|      |       ├── OR|      |       ├── XOR|      ├── Miscellaneous Functions|      |       ├── DEFAulT|      |       ├── GET_LOCK|      |       ├── INET6_ATON|      |       ├── INET6_NTOA|      |       ├── INET_ATON|      |       ├── INET_NTOA|      |       ├── IS_FREE_LOCK|      |       ├── IS_IPV4|      |       ├── IS_IPV4_COMPAT|      |       ├── IS_IPV4_MAPPED|      |       ├── IS_IPV6|      |       ├── IS_USED_LOCK|      |       ├── MASTER_POS_WAIT|      |       ├── name_CONST|      |       ├── RELEASE_LOCK|      |       ├── SLEEP|      |       ├── UUID|      |       ├── UUID_SHORT|      |       ├── VALUES|      ├── Numeric Functions|      |       ├── %|      |       ├── *|      |       ├── +|      |       ├── - BINARY|      |       ├── - UNARY|      |       ├── /|      |       ├── ABS|      |       ├── ACOS|      |       ├── ASIN|      |       ├── atan|      |       ├── atan2|      |       ├── CEIL|      |       ├── CEIliNG|      |       ├── CONV|      |       ├── COS|      |       ├── COT|      |       ├── CRC32|      |       ├── degrees|      |       ├── div|      |       ├── EXP|      |       ├── FLOOR|      |       ├── LN|      |       ├── LOG|      |       ├── LOG10|      |       ├── LOG2|      |       ├── MOD|      |       ├── PI|      |       ├── POW|      |       ├── POWER|      |       ├── radians|      |       ├── RAND|      |       ├── ROUND|      |       ├── SIGN|      |       ├── SIN|      |       ├── SQRT|      |       ├── TAN|      |       ├── TruncATE|      ├── String Functions|      |       ├── ASCII|      |       ├── BIN|      |       ├── BINARY OPERATOR|      |       ├── BIT_LENGTH|      |       ├── CAST|      |       ├── CHAR FUNCTION|      |       ├── CHaraCTER_LENGTH|      |       ├── CHAR_LENGTH|      |       ├── CONCAT|      |       ├── CONCAT_WS|      |       ├── CONVERT|      |       ├── ELT|      |       ├── EXPORT_SET|      |       ├── EXTRACTVALUE|      |       ├── FIELD|      |       ├── FIND_IN_SET|      |       ├── FORMAT|      |       ├── FROM_BASE64()|      |       ├── HEX|      |       ├── INSERT FUNCTION|      |       ├── INSTR|      |       ├── LCASE|      |       ├── left|      |       ├── LENGTH|      |       ├── liKE|      |       ├── LOAD_file|      |       ├── LOCATE|      |       ├── LOWER|      |       ├── LPAD|      |       ├── LTRIM|      |       ├── MAKE_SET|      |       ├── MATCH AGAINST|      |       ├── MID|      |       ├── NOT liKE|      |       ├── NOT REGEXP|      |       ├── OCT|      |       ├── OCTET_LENGTH|      |       ├── ORD|      |       ├── position|      |       ├── QUOTE|      |       ├── REGEXP|      |       ├── REPEAT FUNCTION|      |       ├── REPLACE FUNCTION|      |       ├── REVERSE|      |       ├── RIGHT|      |       ├── RPAD|      |       ├── RTRIM|      |       ├── SOUNDEX|      |       ├── SOUNDS liKE|      |       ├── SPACE|      |       ├── STRCMP|      |       ├── SUBSTR|      |       ├── SUBSTRING|      |       ├── SUBSTRING_INDEX|      |       ├── TO_BASE64()|      |       ├── TRIM|      |       ├── UCASE|      |       ├── UNHEX|      |       ├── UPDATEXML|      |       ├── UPPER|      |       ├── WEIGHT_STRING├── Functions and ModifIErs for Use with GROUP BY|      ├── AVG|      ├── BIT_AND|      ├── BIT_OR|      ├── BIT_XOR|      ├── COUNT|      ├── COUNT disTINCT|      ├── GROUP_CONCAT|      ├── MAX|      ├── MIN|      ├── STD|      ├── STDDEV|      ├── STDDEV_POP|      ├── STDDEV_SAMP|      ├── SUM|      ├── VARIANCE|      ├── VAR_POP|      ├── VAR_SAMP├── Geographic Features|      ├── GEOMETRY|      ├── GEOMETRY HIERARCHY|      ├── SPATIAL|      ├── Geometry constructors|      |       ├── GEOMETRYColLECTION|      |       ├── linesTRING|      |       ├── MulTIlinesTRING|      |       ├── MulTIPOINT|      |       ├── MulTIpolyGON|      |       ├── POINT|      |       ├── polyGON|      ├── Geometry propertIEs|      |       ├── DIMENSION|      |       ├── ENVELOPE|      |       ├── GEOMETRYTYPE|      |       ├── ISEMPTY|      |       ├── ISSIMPLE|      |       ├── SRID|      |       ├── ST_DIMENSION|      |       ├── ST_ENVELOPE|      |       ├── ST_GEOMETRYTYPE|      |       ├── ST_ISEMPTY|      |       ├── ST_ISSIMPLE|      |       ├── ST_SRID|      ├── Geometry relations|      |       ├── CONTAINS|      |       ├── CROSSES|      |       ├── disJOINT|      |       ├── EQUALS|      |       ├── INTERSECTS|      |       ├── OVERLAPS|      |       ├── ST_CONTAINS|      |       ├── ST_CROSSES|      |       ├── ST_disJOINT|      |       ├── ST_disTANCE|      |       ├── ST_EQUALS|      |       ├── ST_INTERSECTS|      |       ├── ST_OVERLAPS|      |       ├── ST_touches|      |       ├── ST_WITHIN|      |       ├── touches|      |       ├── WITHIN|      ├── linestring propertIEs|      |       ├── ENDPOINT|      |       ├── GLENGTH|      |       ├── ISCLOSED|      |       ├── NUMPOINTS|      |       ├── POINTN|      |       ├── STARTPOINT|      |       ├── ST_ENDPOINT|      |       ├── ST_ISCLOSED|      |       ├── ST_NUMPOINTS|      |       ├── ST_POINTN|      |       ├── ST_STARTPOINT|      ├── MBR|      |       ├── asymmetric_DECRYPT|      |       ├── asymmetric_DERIVE|      |       ├── asymmetric_ENCRYPT|      |       ├── asymmetric_SIGN|      |       ├── asymmetric_VERIFY|      |       ├── CREATE_asymmetric_PRIV_KEY|      |       ├── CREATE_asymmetric_PUB_KEY|      |       ├── CREATE_DH_ParaMETERS|      |       ├── CREATE_DIGEST|      |       ├── GTID_SUBSET|      |       ├── GTID_SUBTRACT|      |       ├── MBR DEFinitioN|      |       ├── MBRCONTAINS|      |       ├── MBRdisJOINT|      |       ├── MBREQUAL|      |       ├── MBRINTERSECTS|      |       ├── MbroVERLAPS|      |       ├── MBRtouches|      |       ├── MBRWITHIN|      |       ├── sql_THREAD_WAIT_AFTER_GTIDS|      |       ├── WAIT_UNTIL_sql_THREAD_AFTER_GTIDS|      ├── Point propertIEs|      |       ├── ST_X|      |       ├── ST_Y|      |       ├── X|      |       ├── Y|      ├── polygon propertIEs|      |       ├── AREA|      |       ├── CENTROID|      |       ├── EXTERIORRING|      |       ├── INTERIORRINGN|      |       ├── NUMINTERIORRINGS|      |       ├── ST_AREA|      |       ├── ST_CENTROID|      |       ├── ST_EXTERIORRING|      |       ├── ST_INTERIORRINGN|      |       ├── ST_NUMINTERIORRINGS|      ├── WKB|      |       ├── ASBINARY|      |       ├── ASTEXT|      |       ├── GEOMColLFROMWKB|      |       ├── GEOMFROMWKB|      |       ├── liNEFROMWKB|      |       ├── MliNEFROMWKB|      |       ├── MPOINTFROMWKB|      |       ├── MpolyFROMWKB|      |       ├── POINTFROMWKB|      |       ├── polyFROMWKB|      |       ├── ST_ASBINARY|      |       ├── ST_ASTEXT|      |       ├── ST_GEOMColLFROMWKB|      |       ├── ST_GEOMFROMWKB|      |       ├── ST_liNEFROMWKB|      |       ├── ST_POINTFROMWKB|      |       ├── ST_polyFROMWKB|      ├── WKT|      |       ├── GEOMColLFROMTEXT|      |       ├── GEOMFROMTEXT|      |       ├── liNEFROMTEXT|      |       ├── MliNEFROMTEXT|      |       ├── MPOINTFROMTEXT|      |       ├── MpolyFROMTEXT|      |       ├── POINTFROMTEXT|      |       ├── polyFROMTEXT|      |       ├── ST_GEOMColLFROMTEXT|      |       ├── ST_GEOMFROMTEXT|      |       ├── ST_liNEFROMTEXT|      |       ├── ST_POINTFROMTEXT|      |       ├── ST_polyFROMTEXT|      |       ├── WKT DEFinitioN├── Help Metadata|      ├── HELP_DATE|      ├── HELP_VERSION├── Language Structure├── Plugins├── Procedures├── Storage Engines├── table Maintenance|      ├── ANALYZE table|      ├── CHECK table|      ├── CHECKSUM table|      ├── OPTIMIZE table|      ├── REPAIR table├── Transactions|      ├── CHANGE MASTER TO|      ├── DEALLOCATE PREPARE|      ├── EXECUTE STATEMENT|      ├── ISolATION|      ├── LOCK|      ├── PREPARE|      ├── PURGE BINARY LOGS|      ├── reset MASTER|      ├── reset SLAVE|      ├── SAVEPOINT|      ├── SET GLOBAL sql_SLAVE_SKIP_COUNTER|      ├── SET sql_LOG_BIN|      ├── START SLAVE|      ├── START TRANSACTION|      ├── Stop SLAVE|      ├── XA├── User-defined Functions|      ├── CREATE FUNCTION UDF|      ├── DROP FUNCTION UDF├── Utility|      ├── EXPLAIN|      ├── HELP STATEMENT|      ├── USE

 

总结:

整个脚本在写的过程有两点比较有意思。

1. 函数递归 *** 作,以前没怎么使用Shell进行函数的递归 *** 作。

2. 借鉴tree的输出格式,对结果进行格式化输出。

思路如下:首先定义一个number为0,每次进入一次recursive函数,都会把当前的number加1,如果只是这样的话,那number值将一直增长了,所以在上述脚本else调用recursive函数部分,会在其后执行number=$[$number-1],类似于恢复到上一层目录下。

总结

以上是内存溢出为你收集整理的如何将MySQL help contents的内容层次的输出全部内容,希望文章能够帮你解决如何将MySQL help contents的内容有层次的输出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1151598.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存