方法一:使用 Navicat 查询结果导出(推荐)
步骤:
连接数据库
- 打开 Navicat,连接到目标 MySQL 数据库
执行查询获取表结构信息
SELECT
TABLE_NAME AS '表名',
COLUMN_NAME AS '字段名',
COLUMN_TYPE AS '数据类型',
IS_NULLABLE AS '允许空值',
COLUMN_DEFAULT AS '默认值',
COLUMN_COMMENT AS '字段说明',
EXTRA AS '额外信息'
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_SCHEMA = '你的数据库名'
ORDER BY
TABLE_NAME, ORDINAL_POSITION;
导出查询结果
- 执行查询后,在结果网格上右键
- 选择"导出结果" → "导出当前结果集"
- 选择格式为"Excel 文件 (.xlsx)"
- 设置导出选项和文件路径
方法二:使用 Navicat 设计工具
步骤:
选择要导出的表
- 在左侧对象树中选择一个表
- 右键点击 → "设计表"
查看表结构
手动复制粘贴
- 选中所有字段信息(Ctrl+A)
- 复制(Ctrl+C)
- 粘贴到 Excel 中(Ctrl+V)
方法三:使用 Navicat 报表功能(高级版)
步骤:
生成数据库报告
- 点击菜单"工具" → "报表"
- 选择"数据库报告"
- 选择要报告的表
导出为 Excel
- 生成报告后,点击"导出"按钮
- 选择 Excel 格式
方法四:使用数据同步功能
步骤:
创建数据同步
- 点击菜单"工具" → "数据同步"
- 选择"结构同步"
生成同步脚本
- 选择源数据库和目标
- 查看同步详情
- 导出报告为 Excel
完整的表结构查询语句(包含更多信息):
SELECT
t.TABLE_NAME AS '表名',
t.TABLE_COMMENT AS '表注释',
c.COLUMN_NAME AS '字段名',
c.COLUMN_TYPE AS '数据类型',
c.IS_NULLABLE AS '允许空值',
c.COLUMN_DEFAULT AS '默认值',
c.COLUMN_COMMENT AS '字段注释',
c.EXTRA AS '额外信息',
c.CHARACTER_SET_NAME AS '字符集',
c.COLLATION_NAME AS '排序规则'
FROM
INFORMATION_SCHEMA.TABLES t
INNER JOIN INFORMATION_SCHEMA.COLUMNS c
ON t.TABLE_NAME = c.TABLE_NAME
AND t.TABLE_SCHEMA = c.TABLE_SCHEMA
WHERE
t.TABLE_SCHEMA = '数据库名'
AND t.TABLE_TYPE = 'BASE TABLE'
ORDER BY
t.TABLE_NAME, c.ORDINAL_POSITION;
实用技巧:
1. 批量导出所有表
-- 获取所有表基本信息
SELECT
TABLE_NAME AS '表名',
TABLE_COMMENT AS '表注释',
TABLE_ROWS AS '数据行数',
AVG_ROW_LENGTH AS '平均行长度',
DATA_LENGTH AS '数据长度',
INDEX_LENGTH AS '索引长度',
CREATE_TIME AS '创建时间',
UPDATE_TIME AS '更新时间'
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = '数据库名'
AND TABLE_TYPE = 'BASE TABLE';
2. Excel 格式优化建议
- 冻结首行标题
- 设置列宽自适应
- 添加筛选功能
- 使用不同颜色区分表和字段信息
3. 自动化脚本
可以创建存储过程来自动生成 Excel 格式的报告:
DELIMITER //
CREATE PROCEDURE ExportTableStructureToCSV()
BEGIN
SELECT * FROM (
SELECT '表名','字段名','数据类型','允许空值','默认值','字段说明','额外信息'
UNION ALL
SELECT
TABLE_NAME,
COLUMN_NAME,
COLUMN_TYPE,
IS_NULLABLE,
COLUMN_DEFAULT,
COLUMN_COMMENT,
EXTRA
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
) AS result
INTO OUTFILE '/tmp/table_structure.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
END //
DELIMITER ;
注意事项:
权限问题:确保有访问 INFORMATION_SCHEMA 的权限
Excel限制:单个工作表最多 1,048,576 行
中文乱码:确保导出时字符集设置为 UTF-8
Navicat版本:不同版本界面可能略有差异
替代方案:
如果 Navicat 不可用,还可以使用:
MySQL Workbench 的逆向工程功能
phpMyAdmin 的导出功能
Python 脚本 + pandas 库
MySQL 命令行工具 + sed/awk 处理
选择哪种方法取决于你的具体需求和 Navicat 版本,方法一是最常用且最灵活的方式。