您的位置:首页 > 娱乐 > 明星 > Mysql 脚本转换为drawio ER 脚本

Mysql 脚本转换为drawio ER 脚本

2025/7/15 12:17:23 来源:https://blog.csdn.net/xiaolyuh123/article/details/140989601  浏览:    关键词:Mysql 脚本转换为drawio ER 脚本

Navicat 导出数据库脚本

在这里插入图片描述

通过代码转换脚本

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** SQL 脚本转换为 drawio ER 脚本*/
public class SQLToMermaid {public static void main(String[] args) {String inputFilePath = "/Users/admin/Desktop/xxx.sql"; // 输入文件路径String outputFilePath = "/Users/admin/Desktop/xxx.txt"; // 输出文件路径System.out.println("Reading from: " + inputFilePath);System.out.println("Writing to: " + outputFilePath);try (BufferedReader br = new BufferedReader(new FileReader(inputFilePath));FileWriter fw = new FileWriter(outputFilePath)) {StringBuilder sqlContent = new StringBuilder();String line;// 读取整个文件内容while ((line = br.readLine()) != null) {sqlContent.append(line).append("\n");}String sql = sqlContent.toString();// 正则表达式Pattern tablePattern = Pattern.compile("CREATE TABLE `(\w+)` \((.*?)\) ENGINE.*?(COMMENT='(.*?)')?;",Pattern.CASE_INSENSITIVE | Pattern.DOTALL);// 匹配Matcher tableMatcher = tablePattern.matcher(sql);while (tableMatcher.find()) {String tableName = tableMatcher.group(1);String tableComment = tableMatcher.group(4);fw.write(tableName + "(" + tableComment + ")\n");String columnDefinitions = tableMatcher.group(2);String[] columns = columnDefinitions.split(",(?=\\s*`)");for (String column : columns) {Pattern columnPattern = Pattern.compile("`(\\w+)`\\s+\\w+.*?COMMENT\\s+'(.*?)'",Pattern.DOTALL);Matcher columnMatcher = columnPattern.matcher(column);if (columnMatcher.find()) {String columnName = columnMatcher.group(1);String columnComment = columnMatcher.group(2);fw.write("    " + columnName + ": " + columnComment + "\n");}}fw.write("\n"); // 表之间空一行}System.out.println("Output written to " + outputFilePath);} catch (IOException e) {e.printStackTrace();}}
}

得到的脚本:

custom(自定义表)id: 主键idname: 名称module: 引用类型1:报事类型模板2:报事详情ref_id: 关联表idtype: is_required: 是否必填subsidiary_rule_str: 附属规则json串is_del: 是否删除sort_code: 排序编码create_time: 创建时间creator_uid: 创建人idmodified_time: 修改时间modified_uid: 修改人ididentity(模板通知规则关联执行人)id: 主键ref_id: type区分关联键0工单类型id 1 SLA配置idtype: 关联类型 0工单类型执行1工单类型分派2SLA配置label_id: 类型标签type = 0: 0抄送;step: 步骤0非步骤 1,2,3,4,5升级步骤identity_type: 身份类型 0角色1人员identity_id: 身份id 

脚本导入drawio

在这里插入图片描述
得到了表:
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com