用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">\ <\/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"> </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"> </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=’電壓/電流相位角’;