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

相关推荐
豐儀麟阁贵12 分钟前
5.4静态变量和静态方法
java·开发语言
ytgytg2824 分钟前
芋道源码:VUE3部署:避坑--验证码不现显示,管理后台无法访问后端接口等,完善中。。。
java·vue
乾坤瞬间27 分钟前
【Java后端进行ai coding实践系列】如何使用ai coding实现计划任务增删改查
java·人工智能·python
昔我往昔34 分钟前
@ApiModel注解升级成@Schema注解
java
superlls1 小时前
(场景题)Java 导出 Excel 的两种方式
java·开发语言·后端·excel
harmful_sheep1 小时前
springMvc
java
一只小透明啊啊啊啊1 小时前
Java电商项目中的概念: 高并发、分布式、高可用、微服务、海量数据处理
java·分布式·微服务
2401_841495644 小时前
【数据结构】基于Prim算法的最小生成树
java·数据结构·c++·python·算法·最小生成树·prim
木井巳5 小时前
[Java数据结构和算法] HashMap 和 HashSet
java·数据结构·1024程序员节
祈祷苍天赐我java之术6 小时前
解析常见的限流算法
java·数据结构·算法