如何快速生成MySQL数据库关系图

发布时间:2025-08-16 04:38

package com.example.demo;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.nio.file.Files;

import java.nio.file.Paths;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Set;

import java.util.stream.Collectors;

public class MysqlERGenerate {

    public static void main(String[] args) throws IOException {

        StringBuilder builder = new StringBuilder();

        InputStream is = Files.newInputStream(Paths.get("C:\Users\admin\Desktop\ddl.sql"));

        String line;

        BufferedReader reader = new BufferedReader(new InputStreamReader(is));

        line = reader.readLine();

        while (line != null) {

            builder.append(line);

            builder.append("

");

            line = reader.readLine();

        }

        reader.close();

        is.close();

        String sql = builder.toString();

        String[] split = sql.split("CREATE TABLE");

        List<String> list = new ArrayList<>(Arrays.asList(split));

        list.remove(0);

        Map<String, String> collect = list.stream().collect(Collectors.toMap(k -> {

            int firstIndex = k.indexOf("`");

            return k.substring(++firstIndex, k.indexOf("`", firstIndex));

        }, v -> v));

        Map<String, String> foreignKey = new HashMap<>();

        foreignKey.put("ticket_no", "ticket");

        foreignKey.put("ticket_define_no", "ticket_define");

        foreignKey.put("pro_no", "pro_main");

        Set<String> foreignKeyFields = foreignKey.keySet();

        for (String mainTableName : collect.keySet()) {

            String val = collect.get(mainTableName);

            for (String field : foreignKeyFields) {

                if (!mainTableName.equals(foreignKey.get(field)) && val.indexOf("`" + field + "`") > 0) {

                    String createForeignKeySql = String.format("alter table %s add foreign key %s(%s) references %s(%s);", mainTableName, mainTableName + field + System.currentTimeMillis(), field, foreignKey.get(field), field);

                    System.out.println(createForeignKeySql);

                }

            }

        }

    }

}

网址:如何快速生成MySQL数据库关系图 https://m.mxgxt.com/news/view/1684016

相关内容

mysql数据库表关系图怎么生成
mysql 数据库关系图怎么生成 dataGrip
mysql怎么创建数据库关系图
如何查看mysql数据库表之间的关系
如何可视化MySQL数据库的表关联结构?
MySQL 如何设计电影数据库
mysql怎么建表关系图,数据库表关系怎么建
MySQL 入门:如何设计电影数据库
【MySQL速通篇002】pymysql简单操作mysql数据库的方法
揭秘MySQL:轻松一招,快速掌握数据库中的人脉规模!

随便看看