用vim和Markdown, 将MySQL导出的备份转换为HTML格式的数据字典

用vim和Markdown, 将MySQL导出的数据库制作为数据字典(Markdown表格)

1. 转换为表格

# 将导出的各个字段以'|'分隔
%s/^\s*`\([^`]\+`\)\s*\(\w\+[^ \t]*\)\s*\(.*\)$/| \1 | \2 | \3 |/gc
# 将注释转换为'|'分隔
%s/COMMENT\s*'/| '/gc
# 整理,删除两个'|'之间的','字符
%s/,\s*|/ |/gc
# 添加表头
%s/^\(CREATE\s*TABLE\s*.*\)$/\1\r|字段|类型|缺省值|备注|\r|-|-|-|-|/gc
# 添加内部链接
%s/^DROP\s*TABLE\s*[^`]\+`\(\w\+\)`;/![][b-png]<span id="\1">\&nbsp;<\/span>\r## \1/gc

MySQL导出的SQL示例:

DROP TABLE IF EXISTS `t_001_info`;

CREATE TABLE `t_001_info` (
  `id` varchar(32) NOT NULL,
  `code` varchar(32) NOT NULL COMMENT '行政区划',
  `info` varchar(64) NOT NULL COMMENT '信息',
  `online` char(1) NOT NULL COMMENT '状态',
  `address` varchar(18) NOT NULL COMMENT '地址,16进制',
  `update_time` varchar(32) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `t_001_index` (`id`,`code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


DROP TABLE IF EXISTS `t_002_fn49`;

CREATE TABLE `t_002_fn49` (
  `id` varchar(32) NOT NULL,
  `area_id` varchar(18) DEFAULT NULL COMMENT '区域id',
  `pn` varchar(12) NOT NULL COMMENT '测量点标识',
  `Uab_Ua` varchar(8) DEFAULT NULL COMMENT 'Uab/Ua 相位角',
  `Ub` varchar(8) DEFAULT NULL COMMENT 'Ub 相位角',
  `Ucb_Uc` varchar(8) DEFAULT NULL COMMENT 'Ucb/Uc 相位角',
  `Ia` varchar(8) DEFAULT NULL COMMENT 'Ia 相位角',
  `Ib` varchar(8) DEFAULT NULL COMMENT 'Ib 相位角',
  `Ic` varchar(8) DEFAULT NULL COMMENT 'Ic 相位角',
  `sendTime` varchar(19) NOT NULL COMMENT '启动帧发送时标',
  PRIMARY KEY (`id`),
  KEY `t_002_index` (`id`,`pn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='电压/电流相位角';

执行以上替换之后的文本:

![][b-png]<span id="t_001_info">&nbsp;</span>
## t_001_info

CREATE TABLE `t_001_info` (
|字段|类型|缺省值|备注|
|-|-|-|-|
| id` | varchar(32) | NOT NULL |
| code` | varchar(32) | NOT NULL | '行政区划' |
| info` | varchar(64) | NOT NULL | '信息' |
| online` | char(1) | NOT NULL | '状态' |
| address` | varchar(18) | NOT NULL | '地址,16进制' |
| update_time` | varchar(32) | NOT NULL |
  PRIMARY KEY (`id`),
  UNIQUE KEY `t_001_index` (`id`,`code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


![][b-png]<span id="t_002_fn49">&nbsp;</span>
## t_002_fn49

CREATE TABLE `t_002_fn49` (
|字段|类型|缺省值|备注|
|-|-|-|-|
| id` | varchar(32) | NOT NULL |
| area_id` | varchar(18) | DEFAULT NULL | '区域id' |
| pn` | varchar(12) | NOT NULL | '测量点标识' |
| Uab_Ua` | varchar(8) | DEFAULT NULL | 'Uab/Ua 相位角' |
| Ub` | varchar(8) | DEFAULT NULL | 'Ub 相位角' |
| Ucb_Uc` | varchar(8) | DEFAULT NULL | 'Ucb/Uc 相位角' |
| Ia` | varchar(8) | DEFAULT NULL | 'Ia 相位角' |
| Ib` | varchar(8) | DEFAULT NULL | 'Ib 相位角' |
| Ic` | varchar(8) | DEFAULT NULL | 'Ic 相位角' |
| sendTime` | varchar(19) | NOT NULL | '启动帧发送时标' |
  PRIMARY KEY (`id`),
  KEY `t_002_index` (`id`,`pn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='电压/电流相位角';

然后,将文本拷贝到Markdown

2. 建立索引(内部链接)

# 制作内部链接
%s/^CREATE\s*TABLE\s*.\(\w\+\).\s*(\s*\n\%(\s.*\n\)\+).*[^=]*=[^=]*=\([^;]*\);/[\1](#\1)(\2)/gc
# 删除非索引文本
v/^\[t_/d
# 整理,删除'(utf8)'
%s/([^#'][^)]*)$//gc

然后,将文本拷贝到Markdown

[t_001_info](#t_001_info)
[t_002_fn49](#t_002_fn49)('电压/电流相位角')

3. 表格美化

在MArkdown文件的开头合适的位置,添加以下的文本

# 改变CSS定义的各列的宽度	
<style>
table th:nth-of-type(1) {
	width: 28%;
}
table th:nth-of-type(2) {
	width: 12%;
}
table th:nth-of-type(3) {
	width: 25%;
}
</style>

4.输出结果(数据字典)

t_001_info
t_002_fn49(‘电压/电流相位角’)

 

t_001_info

CREATE TABLE t_001_info (

字段类型缺省值备注
id`varchar(32)NOT NULL
code`varchar(32)NOT NULL‘行政区划’
info`varchar(64)NOT NULL‘信息’
online`char(1)NOT NULL‘状态’
address`varchar(18)NOT NULL‘地址,16进制’
update_time`varchar(32)NOT NULL

PRIMARY KEY (id),
UNIQUE KEY t_001_index (id,code) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

t_002_fn49

CREATE TABLE t_002_fn49 (

字段类型缺省值备注
id`varchar(32)NOT NULL
area_id`varchar(18)DEFAULT NULL‘区域id’
pn`varchar(12)NOT NULL‘测量点标识’
Uab_Ua`varchar(8)DEFAULT NULL‘Uab/Ua 相位角’
Ub`varchar(8)DEFAULT NULL‘Ub 相位角’
Ucb_Uc`varchar(8)DEFAULT NULL‘Ucb/Uc 相位角’
Ia`varchar(8)DEFAULT NULL‘Ia 相位角’
Ib`varchar(8)DEFAULT NULL‘Ib 相位角’
Ic`varchar(8)DEFAULT NULL‘Ic 相位角’
sendTime`varchar(19)NOT NULL‘启动帧发送时标’

PRIMARY KEY (id),
KEY t_002_index (id,pn)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘电压/电流相位角’;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值