mysql2md 是一个简单易用的命令行工具,可以将 MySQL 数据库表结构导出为 Markdown 格式的文档,便于查看和分享数据库设计。
- 将 MySQL 数据库表结构转换为 Markdown 格式
- 支持生成单个文件或多个文件
- 可选择是否包含表的 DDL 语句
- 支持自定义输出目录
- 并发查询提高效率,顺序写入保证输出一致性
- 自动转义 Markdown 特殊字符,避免表格渲染异常
- 显示表的基本信息、字段详情
go install github.com/ciumc/mysql2md@latestgit clone https://github.com/ciumc/mysql2md.git
cd mysql2md
go build -o mysql2mdmysql2md [选项]| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
-dsn |
string | "username:password@tcp(localhost:3306)/database?charset=utf8mb4&parseTime=True&loc=Local&timeout=10s" |
数据库连接字符串 |
-dir |
string | "./output" |
文档输出目录 |
-whole |
bool | false |
是否生成单个文件(true: 单个文件,false: 多个文件) |
-ddl |
bool | false |
是否包含表的 DDL 语句 |
username:password@tcp(host:port)/database?charset=utf8mb4&parseTime=True&loc=Local&timeout=10s
-
生成包含 DDL 语句的单个文档文件到当前目录:
mysql2md -dsn 'root:password@tcp(localhost:3306)/test?charset=utf8mb4&parseTime=True&loc=Local&timeout=10s' -whole -ddl -dir=. -
生成包含 DDL 语句的单个文档文件:
mysql2md -dsn 'root:password@tcp(localhost:3306)/test?charset=utf8mb4&parseTime=True&loc=Local&timeout=10s' -whole -ddl -
为每个表生成单独的文件并包含 DDL 语句:
mysql2md -dsn 'root:password@tcp(localhost:3306)/test?charset=utf8mb4&parseTime=True&loc=Local&timeout=10s' -ddl -
为每个表生成单独的文件但不包含 DDL 语句:
mysql2md -dsn 'root:password@tcp(localhost:3306)/test?charset=utf8mb4&parseTime=True&loc=Local&timeout=10s'
工具会生成以下信息:
默认生成一个表清单文件,包含数据库中所有表的基本信息:
- 表名(带链接)
- 存储引擎
- 创建时间
- 字符集校对规则
- 表注释
为每个表生成详细信息文档,包含:
- 字段名
- 默认值
- 是否可为空
- 字符集校对规则
- 字段类型
- 键类型(主键、索引等)
- 额外信息(自增等)
- 字段注释
当使用 -ddl 参数时,还会包含表的完整创建语句。
mysql2md/
├── main.go # CLI 入口:flag 解析、编排
├── db.go # 数据库连接 + 查询(SchemaQuerier 接口实现)
├── models.go # 数据模型 + SchemaQuerier 接口定义
├── render.go # Markdown 渲染(纯函数,无 I/O)
├── writer.go # 文件写入编排(并发查询 + 顺序写入)
├── render_test.go # 渲染测试
├── writer_test.go # 写入测试
├── testhelper_test.go # SQLite 内存数据库测试辅助
├── db_test.go # 数据库层测试
├── main_test.go # 入口逻辑测试
├── go.mod
└── go.sum
- SchemaQuerier 接口 — 解耦数据库访问与 Markdown 生成,便于测试和扩展
- 并发查询 + 顺序写入 — 利用 errgroup 并发查询数据库,结果按索引存入 slice 后顺序写入文件,兼顾性能与输出一致性
- 纯函数渲染 — render.go 中的函数仅接受结构体、返回字符串,无副作用
go test -race ./...go test -race -cover ./...本项目采用 MIT 许可证,详见 LICENSE 文件。