Java + SQLServer:一键导出数据库表结构为 Markdown 文档

在日常开发中,尤其是多人协作的项目,数据库表结构文档 是不可或缺的一部分。但不少人都是手工整理,效率低、容易出错。

今天分享一个小工具,使用 Java 连接 SQL Server,自动导出所有表结构为 Markdown 文件,方便团队查看或生成技术文档。


功能简介

  • 遍历数据库中所有表
  • 获取每张表的字段名、数据类型、是否可为空、字段备注
  • 以 Markdown 表格形式导出,生成一张张结构清晰的文档

适合场景:

  • 新项目开始前梳理建表文档
  • DBA、开发对接查看结构
  • 项目文档沉淀

技术栈

  • Java 8+
  • SQL Server JDBC 驱动
  • 普通文本 IO,无任何依赖

代码结构

项目共两个类:

  • Exporter.java:主程序,连接数据库并遍历所有表
  • MdWriter.java:负责将表结构写入 Markdown 文件

完整代码

Exporter.java

ini 复制代码
import java.sql.*;
import java.util.*;
import java.io.*;

public class Exporter {
    public static void main(String[] args) throws Exception {
        String url = "jdbc:sqlserver://localhost:1433;databaseName=your_db"; // 替换为你的数据库名
        String user = "sa";            // 替换为你的用户名
        String password = "password";  // 替换为你的密码

        Connection conn = DriverManager.getConnection(url, user, password);
        DatabaseMetaData metaData = conn.getMetaData();

        ResultSet tables = metaData.getTables(null, null, "%", new String[]{"TABLE"});

        while (tables.next()) {
            String tableName = tables.getString("TABLE_NAME");
            List<String[]> rows = new ArrayList<>();
            ResultSet columns = metaData.getColumns(null, null, tableName, null);

            while (columns.next()) {
                String colName = columns.getString("COLUMN_NAME");
                String type = columns.getString("TYPE_NAME");
                String nullable = columns.getInt("NULLABLE") == DatabaseMetaData.columnNullable ? "YES" : "NO";
                String remarks = columns.getString("REMARKS");
                rows.add(new String[]{colName, type, nullable, remarks});
            }

            MdWriter.writeTable(tableName, rows);
        }

        conn.close();
        System.out.println("✅ 导出完成!");
    }
}

MdWriter.java

java 复制代码
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

public class MdWriter {
    public static void writeTable(String tableName, List<String[]> rows) throws IOException {
        FileWriter writer = new FileWriter(tableName + ".md");
        writer.write("### 表:" + tableName + "\n\n");
        writer.write("| 字段名 | 类型 | 可为空 | 说明 |\n");
        writer.write("|--------|------|--------|------|\n");

        for (String[] row : rows) {
            writer.write(String.format("| %s | %s | %s | %s |\n",
                    row[0], row[1], row[2], row[3] != null ? row[3] : ""));
        }

        writer.close();
    }
}

使用说明

1. 引入 SQL Server 驱动

请下载并引入 Microsoft JDBC Driver for SQL Server

例如放入项目目录并在 IDE 中添加:

复制代码
sqljdbc4.jar

或使用 Maven:

xml 复制代码
<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>9.4.1.jre8</version>
</dependency>

2. 修改连接信息

Exporter.java 中的这部分替换为你的本地数据库信息:

ini 复制代码
String url = "jdbc:sqlserver://localhost:1433;databaseName=your_db";
String user = "sa";
String password = "your_password";

3. 运行项目

执行主函数,运行后你会在项目目录下看到多个 .md 文件,每个对应一个数据库表,类似如下:

表:User

字段名 类型 可为空 说明
id INT NO 主键
name VARCHAR YES 用户名
... ... ... ...

小结

这是一个非常实用的小工具,能帮助我们更好地梳理数据库结构,尤其适用于:

  • 团队建表文档编写
  • 数据结构变更版本管理
  • 提升文档规范性和可视化程度

如果你觉得有用,欢迎点赞收藏 🧡

也欢迎在评论区一起交流 Java 工具小项目的思路和优化方式!

相关推荐
forestsea18 分钟前
深入理解Java三大特性:封装、继承和多态
java·开发语言
阿达King哥21 分钟前
JVM局部变量表和操作数栈的内存布局
java·jvm
Clf丶忆笙28 分钟前
Spring Boot日志配置与管理:从入门到精通
java·spring boot
Aric_Jones29 分钟前
idea更换jdk版本操作
java·ide·intellij-idea
飞升不如收破烂~1 小时前
Spring 中四种常见初始化方法,对比 static {} 和 @PostConstruct 在并发,Spring 加载顺序大致为: JVM 加载类
java·jvm·spring
Aric_Jones1 小时前
FastDFS,分布式文件存储系统,介绍+配置+工具类
java·数据库·redis·分布式·idea·dfs
来自星星的坤1 小时前
Spring Boot 中如何解决 CORS 问题(详解)
java·spring·springboot
LUCIAZZZ2 小时前
Caffeine快速入门
java·后端·spring·缓存·操作系统·springboot
SunTecTec2 小时前
SQL Server To Paimon Demo by Flink standalone cluster mode
java·大数据·flink
佩奇的技术笔记2 小时前
Java学习手册:ORM 框架性能优化
java·性能优化