特に複数人でのプロジェクト開発において、データベースのテーブル構造ドキュメントは欠かせないものです。しかし、手作業で整理するのは効率が悪く、エラーも発生しやすいのが実情です。
本記事では、Javaを使用してSQL Serverに接続し、全てのテーブル構造を自動でMarkdownファイルにエクスポートするツールを紹介します。これにより、チームで構造を確認したり、技術ドキュメントを作成したりするのが容易になります。
機能概要
- データベース内の全テーブルを走査
- 各テーブルのフィールド名、データ型、NULL許容性、フィールドコメントを取得
- Markdown形式のテーブルとして出力し、構造が明確なドキュメントを生成
以下のようなシチュエーションに最適です:
- 新規プロジェクト開始前のテーブル設計書の整理
- DBAや開発者間での構造確認
- プロジェクトドキュメントの資産化
技術スタック
- Java 8 以上
- SQL Server JDBC ドライバ
- 標準のテキストIO(追加ライブラリ不要)
コード構成
プロジェクトは以下の2つのクラスで構成されます:
Exporter.java:メインプログラム。データベースに接続し、全テーブルを走査します。MdWriter.java:テーブル構造をMarkdownファイルに書き込む処理を担当します。
完全なコード
Exporter.java
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
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("| フィールド名 | 型 | NULL許容 | 説明 |\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を使用する場合:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>9.4.1.jre8</version>
</dependency>
2. 接続情報の修正
Exporter.java 内の以下の部分を、実際のデータベース情報に置き換えます:
String url = "jdbc:sqlserver://localhost:1433;databaseName=your_db";
String user = "sa";
String password = "your_password";
3. 実行
メインメソッドを実行すると、プロジェクトディレクトリに各テーブルに対応した .md ファイルが生成されます。例えば、以下のような出力が得られます:
テーブル:User
| フィールド名 | 型 | NULL許容 | 説明 |
|---|---|---|---|
| id | INT | NO | 主キー |
| name | VARCHAR | YES | ユーザー名 |
| … | … | … | … |
まとめ
本ツールは、データベース構造の整理を支援する実用的なものです。特に以下のような場面で役立ちます:
- チームでのテーブル設計書の作成
- データ構造変更時のバージョン管理
- ドキュメントの標準化と可視性の向上