当前位置: 首页 > news >正文

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(3);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

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

http://www.lryc.cn/news/417095.html

相关文章:

  • 基于babylonjs的小游戏 跳一跳
  • 移动端下拉加载更多(h5,小程序)
  • Linux安全与高级应用(二)Linux Web服务器的安全配置与高级应用
  • 关于React.createContext全局注入的一些记录
  • 在S/4HANA OP 1511中激活嵌入式分析的基本配置
  • 好的提交 VS. 坏的提交 :Git 的最佳实践
  • MySQL第4讲--图像化界面工具DataGrip介绍
  • Curl工具小记
  • 【C#语音文字互转】C#语音转文字(方法一)
  • 基于Linux系统下的在线手机商城
  • Apache Kafka 事务详解
  • Go语言 结构体
  • 数据结构(邓俊辉)学习笔记】词典 03—— 排解冲突(1)
  • HTML5+CSS3-HTML5入门
  • 谷粒商城实战笔记-138-商城业务-首页-渲染二级三级分类数据
  • git的基础用法
  • 常见中间件漏洞(四、Apache合集)
  • HCIE-学习笔记
  • 【计算机网络】性能指标-带宽和时延(MB、GB、KB、B、byte、bit、Mb/s、Gb/s、b/s等)学习
  • ANN(Approximate Nearest Neighbor)搜索和索引库到底是什么?
  • 勒索软件、供应链攻击等带来的思考!
  • 【Nuxt】自定义插件和生命周期
  • MySQL的简单介绍
  • leetcode 116.填充每个节点的下一个右侧结点指针
  • 『 Linux 』网络基础
  • Python酷库之旅-第三方库Pandas(070)
  • 第一篇Linux介绍
  • 在Windows编程中,MFC\C++中OnCopyData如何传递基础类型数据?
  • 10款超好用的图纸加密软件推荐,2024企业常用图纸加密软件分享
  • BUUCTF [安洵杯 2019]easy_serialize_php 1