由于前几天总是会收到制作数据库文档的任务,而且数据库表的数量庞大,于是我就想偷懒,写个脚本将SQL脚本转换成csv文档再用excle稍微美化一下粘到word中。
grep -E '[-,()]' $1
先用grep将带有-,()这些符号的行取出
接上条:| sed -e 's/[A-Z]*/\L&\E/g'
用sed将全文大写转成小写
-e 's/^\s*create\s*table.*\.//g'
将含有 create table .的行去掉
-e 's/\s*(\s*$/\n/g'
将 ( 替换成换行符
-e 's/^\s*);\s*$//g'
将以仅含 ); 的行去掉
-e 's/,//g'
将,去掉
-e 's/^\s*\t*\s*//g'
将以空白开头的行中的空白去掉
-e 's/not\s*null/not_null/g'
将not null换为not_null
-e '/\<dt/'d
将含有以dt为开头的单词的行去掉
-e 's/\s\s/ /g'
将两个空格换成一个
-e 's/\s/\t/g'
将空格换成table
-e 's/\t/\t/g'
将table也换成table
-e 's/current\s*timestamp/current_timestamp/g'
将current timestamp 换为current_timestamp
-e 's/with\s*default\t//g'
将with default删掉
-e 's/\(default\t.\)\t\(not_null\)/\2\t\1/g'
将default与not_null互换位置
-e 's/default\t//g'
将default删除
-e 's/primary\s*\key/\tprimary_key/g'
将primary key替换为primary_key
-e 's/\t/,/g' > $2.csv
最后将table都替换为逗号,并输出到.csv文件