Mysql快速导出数据库设计说明书word文档(表结构、类型、注释、是否有主键)
·
主要有三种方式,根据你的需求来选择:
1、Mysql语句查询
优点:无需安装额外的软件,使用你常用的数据库可视化工具即可
缺点:受限于你的数据库可视化工具的导出功能,需要额外写脚本进行处理
2、Python脚本
优点:可以完全自定义样式
缺点:需要额外安装配置Python
3、PDManer(推荐)
优点:直接生成能够满足大部分要求的数据库设计说明书,能根据模版自定义样式
缺点:需要额外安装PDManer,步骤多
建议:如果客户没有明确要求样式,使用PDManer即可满足交付任务
1、Mysql语句查询
可以使用Navicat和DBeaver等数据库可视化工具,我这里用的是DBeaver

查询SQL:
SELECT
c.TABLE_NAME as '表名', -- 表名
c.COLUMN_NAME as '列名', -- 列名
c.COLUMN_TYPE as '数据类型', -- 列数据类型
c.COLUMN_COMMENT as '注释', -- 列注释
c.ORDINAL_POSITION as '排序', -- 列位置
IF(k.COLUMN_NAME IS NOT NULL, '是', '否') AS '是否主键' -- 是否为主键
FROM
INFORMATION_SCHEMA.COLUMNS c
LEFT JOIN
(
SELECT
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME
FROM
INFORMATION_SCHEMA.STATISTICS
WHERE
INDEX_NAME = 'PRIMARY' -- 只选择主键信息
GROUP BY
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME
) k ON c.TABLE_SCHEMA = k.TABLE_SCHEMA AND c.TABLE_NAME = k.TABLE_NAME AND c.COLUMN_NAME = k.COLUMN_NAME
WHERE
c.TABLE_SCHEMA = 'database' -- 替换为您的数据库名
ORDER BY
c.TABLE_SCHEMA,
c.TABLE_NAME,
c.ORDINAL_POSITION;
使用自己的数据库可视化工具进行导出。
2、Python脚本
首先要先安装Python,可以自定义样式,可操控性强。
Python语句:
import pymysql
from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
# 替换为你的数据库配置
db_config = {
'host': '192.168.0.54',
'port': 3306,
'user': 'root',
'password': 'password',
'database': 'crm',
'charset': 'utf8mb4'
}
# 设置字体样式
def set_run_style(run, font_name='宋体', font_size=10.5, bold=False):
run.font.name = font_name
run._element.rPr.rFonts.set(qn('w:eastAsia'), font_name)
run.font.size = Pt(font_size)
run.bold = bold
# 获取表结构信息
def fetch_table_structure(config):
conn = pymysql.connect(**config)
cursor = conn.cursor(pymysql.cursors.DictCursor)
cursor.execute(f"""
SELECT TABLE_NAME, TABLE_COMMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = %s AND TABLE_NAME NOT LIKE 'act%%'
""", (config['database'],))
tables = cursor.fetchall()
cursor.execute(f"""
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_KEY, EXTRA, COLUMN_DEFAULT, COLUMN_COMMENT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = %s AND TABLE_NAME NOT LIKE 'act%%'
ORDER BY TABLE_NAME, ORDINAL_POSITION
""", (config['database'],))
columns = cursor.fetchall()
conn.close()
table_map = {t['TABLE_NAME']: {'comment': t['TABLE_COMMENT'], 'columns': []} for t in tables}
for col in columns:
table_map[col['TABLE_NAME']]['columns'].append(col)
return table_map
# 生成 Word 文档
def generate_doc(table_map, file_path):
doc = Document()
title = doc.add_heading('', 0)
run = title.add_run('数据库表结构文档')
set_run_style(run, '黑体', 16, True)
title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
for table_name, table_info in table_map.items():
# 表名标题
heading = doc.add_heading('', level=1)
run = heading.add_run(f"表名:{table_name}")
set_run_style(run, '微软雅黑', 14, True)
# 表注释
para = doc.add_paragraph()
run = para.add_run(f"表注释:{table_info['comment']}")
set_run_style(run, '宋体', 11)
# 表格结构
table = doc.add_table(rows=1, cols=7)
table.style = 'Light List Accent 1'
headers = ['字段名', '数据类型', '是否可为空', '键类型', '默认值', '额外信息', '字段注释']
hdr_cells = table.rows[0].cells
for i, text in enumerate(headers):
run = hdr_cells[i].paragraphs[0].add_run(text)
set_run_style(run, '宋体', 10.5, True)
for col in table_info['columns']:
row = table.add_row().cells
values = [
col['COLUMN_NAME'],
col['COLUMN_TYPE'],
col['IS_NULLABLE'],
col['COLUMN_KEY'],
str(col['COLUMN_DEFAULT']) if col['COLUMN_DEFAULT'] is not None else '',
col['EXTRA'],
col['COLUMN_COMMENT']
]
for i, val in enumerate(values):
run = row[i].paragraphs[0].add_run(val)
set_run_style(run, '宋体', 10.5)
doc.add_paragraph() # 空行分隔表
doc.save(file_path)
print(f"✅ 已生成 Word 文档:{file_path}")
# 执行
if __name__ == '__main__':
table_data = fetch_table_structure(db_config)
generate_doc(table_data, '数据库表结构文档_美观版.docx')
效果:

3、PDManer(推荐)
官网下载地址:
https://www.yonsum.com/Download
使用:
3.1 新建项目


3.2 PDManer连接数据库
步骤:
1、点击数据库
2、点击新增
3、填写数据库驱动连接信息
4、测试
5、成功后点确定

连接成功:

3.3 将数据库数据导入到PDManer
导入-》从数据库连接逆向解析

选择数据库:

选择需要操作的表:

导入:

结果:

3.4 将数据表导出成WORD文档
导出 -> 导出为WORD文档

选择导出模版:
PS:(不选默认为系统自带的模版,如需修改则下载文档模版再指定模版文件)


3.5 选择导出的表

没什么不能说的就直接全部导出,有什么不能说的那就~筛选导出~
工作流的表我就不导了。

word文档效果:

更多推荐
所有评论(0)