主要有三種方式,根據你的需求來選擇:
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_namerun._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_COMMENTFROM information_schema.TABLESWHERE 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_COMMENTFROM information_schema.COLUMNSWHERE 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.CENTERfor 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].cellsfor 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().cellsvalues = [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文檔效果: