Sublime Text 无法直接连接数据库或读取 MySQL 表结构,批量生成测试数据库字典需先在数据库工具中执行 SQL 查询 information_schema.columns 获取字段信息,再粘贴至 Sublime,利用多光标、正则和列编辑整理为 Markdown 表格。

Sublime Text 本身不连接数据库,也不能直接读取 MySQL 表结构,所谓“批量生成测试数据库字典”,本质是:用 SQL 从 information_schema.columns 查出字段信息 → 粘贴进 Sublime → 用多光标、正则、列编辑等手段快速整理成可读文档。跳过这层理解,直接想“点几下就出字典”,会卡在第一步。
怎么从 MySQL 导出带注释的字段结构
核心是这条 SQL,必须手动执行(比如在 Navicat、DBeaver 或命令行里运行),Sublime 不参与查询:
SELECT column_name AS `字段名`, data_type AS `类型`, CASE WHEN is_nullable = 'YES' THEN '是' ELSE '否' END AS `允许为空`, column_key AS `键`, column_default AS `默认值`, extra AS `额外`, column_comment AS `注释` FROM information_schema.columns WHERE table_schema = 'your_db_name' AND table_name = 'your_table_name' ORDER BY ordinal_position;
常见错误现象:
-
table_schema写成数据库用户名(如root),实际应填数据库名(如my_project) - 中文注释显示为
???:导出时未设置客户端字符集为utf8mb4,执行SET NAMES utf8mb4;再查 - 字段顺序乱:漏掉
ORDER BY ordinal_position,结果按字母排序而非建表顺序
如何在 Sublime 中把 SQL 结果转成 Markdown 表格
粘贴 SQL 查询结果后(通常是制表符分隔的纯文本),需补全表头、对齐列宽、转义特殊字符。关键操作不是“一键生成”,而是控制节奏:
将 Markdown 格式的回复转换为适合 Telegram 的富文本,避免渲染错误。适用于用户偏好 Markdown 但目标平台为 Telegram 的场景。
- 先用
Ctrl+Shift+P→ 输入Convert Indent to Spaces统一缩进,避免后续正则错位 - 选中全部内容 →
Ctrl+Shift+L进入列编辑模式 → 在每行末尾统一加|(注意:光标必须对齐到同一列) - 在首行上方手动输入表头行,例如:
| 字段名 | 类型 | 允许为空 | 键 | 默认值 | 额外 | 注释 | - 再用正则替换补分隔线:
Ctrl+H→ 勾选Regular Expression→ 查找^.*$→ 替换为| $0 |→ 全部替换(此时每行前后都加了|) - 最后手动删掉第一行(原表头)和第二行(分隔线模板),再在第二行插入标准 Markdown 分隔线:
|---|---|---|---|---|---|---|
批量处理多个表时怎么避免重复劳动
单表靠手工还行,10 张表手动粘贴+整理极易出错。真正省时间的做法是让 SQL 输出直接接近 Markdown 格式,减少 Sublime 里的修补:
- 改写 SELECT,用
CONCAT拼接 Markdown 行:CONCAT('| ', column_name, ' | ', data_type, ' | ... | ', IFNULL(column_comment, ''), ' |') - 在查询末尾加
UNION ALL合并多表结果,但注意各表字段数必须一致(可补NULL占位) - 导出时选择「CSV」格式而非「表格」,避免制表符干扰;再用 Sublime 的
Ctrl+H→ 正则,(?=(?:[^"]*"[^"]*")*[^"]*$)替换为|(处理带逗号的注释) - 别依赖 Sublime 插件自动识别 CSV:Text Pastry 或 CSVelte 对复杂注释支持差,手写正则更可控
容易被忽略的细节:中文字段名与默认值空值
很多人导出后发现“默认值”列全是 NULL 或空白,以为数据丢了——其实是 MySQL 的 column_default 字段对无默认值的字段返回 NULL,而 Sublime 的正则替换若没处理 NULL 字面量,就会留空行或错位。
正确做法:
- 导出前在 SQL 里用
IFNULL(column_default, '—')或COALESCE(column_default, '无')显式转换空值 - 字段名含中文或括号(如
user_id(主键))时,Markdown 表格渲染可能异常,建议在 Sublime 里用正则\((.*?)\)→($1)统一转全角括号 - 注释里有竖线
|或换行符?SQL 查询结果里它会被截断或破坏格式,必须提前在数据库侧用REPLACE(column_comment, '|', '|')(全角竖线)规避
真正耗时的从来不是按键次数,而是判断哪一步该在数据库里做、哪一步该在 Sublime 里做。把逻辑切分清楚,比找“一键字典插件”实在得多。

















