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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章