目录

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

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
angushine44 分钟前
Gateway获取下游最终响应码
java·开发语言·gateway
爱的叹息1 小时前
关于 JDK 中的 jce.jar 的详解,以及与之功能类似的主流加解密工具的详细对比分析
java·python·jar
一一Null1 小时前
Token安全存储的几种方式
android·java·安全·android studio
AUGENSTERN_dc1 小时前
RaabitMQ 快速入门
java·后端·rabbitmq
晓纪同学1 小时前
C++ Primer (第五版)-第十三章 拷贝控制
java·开发语言·c++
小样vvv1 小时前
【源码】SpringMvc源码分析
java
nzwen6662 小时前
Redis学习笔记及总结
java·redis·学习笔记
燃星cro2 小时前
参照Spring Boot后端框架实现序列化工具类
java·spring boot·后端
匹马夕阳2 小时前
java开发中的设计模式之单例模式
java·单例模式·设计模式