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 工具小项目的思路和优化方式!

相关推荐
Web Security Loop17 分钟前
MAC卸载JDK环境
java·macos·jdk
Rain的Java大神之路1 小时前
线上接口负载满了如何解决
java·数据库·redis·后端·缓存·面试·架构
counting money2 小时前
Tomcat 专题:从基础架构到性能调优与 WebSocket 实战
java·websocket·tomcat
xiaohaiAIgeo2 小时前
【2026年】HG/T 20656-2024化工暖通空调设计规范:新版标准的变化与影响
java·前端·javascript·科普知识
小强库计算机毕业设计3 小时前
基于 Spring Boot + Vue3 的校园管理系统
java·spring boot·后端·项目实战·管理系统·技术分享·校园管理系统实战
霸道流氓气质3 小时前
Java中信号量(Semaphore):从本地到分布式
java·开发语言·分布式
怪奇云呼军3 小时前
G.711、Opus 和重采样会拖慢识别吗?闪电智能VoiceAgent 的音频入口怎么选
java·人工智能·python·算法·云计算·音视频
编程令我快乐3 小时前
maven部分构建参数讲解
java·maven
ZC跨境爬虫3 小时前
LeetCode 27. 移除元素(双指针详解 + Java Python 多解法对比)
java·python·leetcode
kisbad4 小时前
Day 036|OpenAI Agents SDK 快速开始:今天跑通第一个 Agent
java·前端·javascript