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

相关推荐
A-Jie-Y31 分钟前
JAVA框架-SpringBoot环境搭建指南
java·spring boot
深兰科技39 分钟前
深兰科技与淡水河谷合作推进:矿区示范加速落地
java·人工智能·python·c#·scala·symfony·深兰科技
码界奇点1 小时前
基于Spring Boot的前后端分离商城系统设计与实现
java·spring boot·后端·java-ee·毕业设计·源代码管理
一叶飘零_sweeeet1 小时前
深度剖析:Java 并发三大量难题 —— 死锁、活锁、饥饿全解
java·死锁·活锁·饥饿
IT乐手1 小时前
java 对比分析对象是否有变化
android·java
云烟成雨TD1 小时前
Spring AI Alibaba 1.x 系列【18】Hook 接口和四大抽象类
java·人工智能·spring
Hachi被抢先注册了1 小时前
Docker学习记录
java·云原生·eureka
devilnumber2 小时前
Spring Boot 2 vs Spring Boot 3:50 条核心区别 + 升级优势 + 避坑指南
java·spring boot·springboot升级
武超杰2 小时前
Spring Cloud Alibaba Nacos 进阶:配置隔离、集群、持久化与开机自启
java·开发语言
Venhoul2 小时前
@Scheduled(cron = “1 0 0 * * ?“用法介绍
java