以前一直想写一下,一直没时间,今天领导问到就记录一下吧
可以有三种方式 awk ,sed 另外一种是mysql本身的命令mysql_find_rows
1,先导出系统库mysql整库的数据
mysqldump -uroot -p mysql > mysql.sql
2,通过mysql_find_rows 获取表的信息
不过需要注意的是,该表比较特殊其他表的行内容没有包含有该表表名的字符串,所以可以很好的查找出来,但是如果其他表行内容包含了要查找表的表名者输出结果将与预期不符,这里就不贴出结果有兴趣的可以自己试验。
2,使用sed命令抽取表
使用sed 命令进行提取需要注意表的顺序 先登录mysql数据库
use mysql ;
show tables;
结果如图:
这里需要抽取db表 则可以执行如下命令
cat mysql.sql | sed -n -e '/Table structure for table .db./,/Table structure for table .event./p'
得到的结果如下:
如果想要提取多张表 t1,t2,t3 而表的排名是t0,t1,t2,t3,t4,t5 那么只要将上述命令改为:
cat mysql.sql | sed -n -e '/Table structure for table .t1./,/Table structure for table .t4./p' 即可
3,awk 原理类似sed 这里就不再做实验
忙里偷闲先简单写到这吧,希望对您有用。