当前位置: 首页 > 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

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

相关文章:

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 脚本*/ pu…...

基于babylonjs的小游戏 跳一跳

源码地址...

移动端下拉加载更多(h5,小程序)

1.h5,使用原生方式监听页面滚动下拉加载更多 <template><div></div> </template><script> export default {data() {return {loadflag: true,maxpages: 0, //最大页码currentpage: 0, //当前页listData: [],config: {page: 1,pageSize: 15,tota…...

Linux安全与高级应用(二)Linux Web服务器的安全配置与高级应用

文章目录 Linux Web服务器的安全配置与高级应用一、HTTPD服务的基本配置1.1 HTTPD服务简介1.2 HTTPD配置文件 二、Web服务的访问控制2.1 客户端地址限制2.2 用户授权限制 三、构建虚拟Web主机3.1 虚拟主机简介3.2 基于域名的虚拟主机3.3 基于IP地址的虚拟主机3.4 基于端口的虚拟…...

关于React.createContext全局注入的一些记录

一、React Context 原理 简单地说就是可以将一些数据注入到Context对象中&#xff0c;使其下辖的组件可以随时随地访问这些数据&#xff0c;省去了逐层传递的步骤。 相对于在组件里挖槽&#xff08;比如{props.children}&#xff09;&#xff0c;使用Context应该更注重随时随…...

在S/4HANA OP 1511中激活嵌入式分析的基本配置

大家好&#xff0c;在这篇博客中&#xff0c;我将讨论在 S/4HANA On-Premise 1511 版本中激活嵌入式分析的基本配置。本博客主要关注Fiori前端系统和S/4HANA后端系统的分离安装。让我们深入了解一下。 景观 前端系统 SAP Fiori for S/4HANA OP 1511 Bakend系统SAP S/4HANA后…...

好的提交 VS. 坏的提交 :Git 的最佳实践

在软件或网页开发的精彩世界中&#xff0c;版本控制是每个与其他开发者合作项目的开发者必备的工具。Git 是最常用的版本控制系统之一&#xff0c;它帮助开发者跟踪变更、有效地回到之前的状态&#xff0c;并在项目中进行团队协作。但是&#xff0c;Git 的工作只有在正确管理提…...

MySQL第4讲--图像化界面工具DataGrip介绍

文章目录 前言DataGrip的下载DataGrip安装DataGrip连接数据库DataGrip使用创建数据库创建表修改表 DataGrip中编写SQL语句操作数据库 前言 在第二讲MySQL第2讲–关系型数据库以及SQL语句分类之DDL数据库和表的操作和第三讲MySQL第3讲–数据类型和表的修改和删除的介绍当中所有的…...

Curl工具小记

curl 是一个非常强大且灵活的命令行工具&#xff0c;用于获取或发送数据&#xff0c;无需用户图形界面交互。它支持多种协议&#xff0c;并且可以在脚本中使用&#xff0c;以实现自动化任务。 基本介绍 curl 是 “Client URL” 的缩写&#xff0c;它是一个利用 URL 语法在命令…...

【C#语音文字互转】C#语音转文字(方法一)

Whisper.NET开源项目&#xff1a;https://github.com/sandrohanea/whisper.net/tree/main 一. 环境准备 在VS中安装 Whisper.net&#xff0c;在NuGet包管理器控制台中运行以下命令&#xff1a; Install-Package Whisper.net Install-Package Whisper.net.Runtime其中运行时包…...

基于Linux系统下的在线手机商城

项目背景 随着网络的发展&#xff0c;电子商务的兴起和普及使得消费者越来越倾向于通过互联网购买商品和服务&#xff0c;越来越多的传统零售商和新兴企业转向在线销售以满足消费者的需求&#xff0c;个成功的在线商城项目背景包括对市场需求、竞争环境、技术和平台选择、商业…...

Apache Kafka 事务详解

Apache Kafka 事务详解 Apache Kafka 是一个分布式流处理平台&#xff0c;主要用于实时数据的传输和处理。在现代的数据密集型应用中&#xff0c;事务性保证在数据传输和处理中的作用至关重要。本文将详细介绍 Kafka 的事务性支持&#xff0c;包括其基本概念、架构、使用方法以…...

Go语言 结构体

本文主要为Go语言 结构体介绍、语法、使用注意及其示例。 目录 结构体 语法 语法示例 语法说明 声明使用 创建并赋值 使用指针 使用注意 总结 结构体 C语言里面&#xff0c;我们可以使用typedef in MyInt。 在go语言中使用结构体来模拟类&#xff0c;使用type stru…...

数据结构(邓俊辉)学习笔记】词典 03—— 排解冲突(1)

文章目录 1. 一山二虎2. 泾渭分明3. 开放定址4. 线性试探5. 赖惰删除 1. 一山二虎 此前我们已经多次指出&#xff0c;对于需要动态维护的散列表冲突是不可避免的&#xff0c;无论你的散列函数设计的有多么精妙&#xff0c;因此我们不得不回答的第二个重要问题就是一旦发生冲突&…...

HTML5+CSS3-HTML5入门

1.web标准 W3C为web标准化做出了以下事项&#xff0c;主要包括结构&#xff0c;表现和行为。 结构用于对网页的信息进行分类和整理&#xff0c;使用技术包括HTML,XML,XHTML 表现指网页的外在样式&#xff0c;一般包括网页的版式&#xff0c;颜色&#xff0c;字体&#xff0c…...

谷粒商城实战笔记-138-商城业务-首页-渲染二级三级分类数据

本节的主要内容是在前一节的基础上&#xff0c;提供结构查询出所有的二级、三级分类数据。 一&#xff0c;构造响应体数据结构 后端返回给前端的数据结构是在开发详细设计中应该确定的内容。 分析前端需要的数据结构&#xff0c;后端要将所有一级分类包含的二级和三级分类信…...

git的基础用法

文章目录 前言关联仓库提交代码分支操作账号免密 前言 记录一下git的一些基础用法。 关联仓库 # 初始化 git init# 关联仓库 git remote add origin <仓库地址># 查看当前关联的仓库 git remote -v# 一次只能remote一个&#xff0c;要换需要先删原来的 git remote rem…...

常见中间件漏洞(四、Apache合集)

目录 四、Apache 4.1 CVE-2021-41773 漏洞简介 影响版本 环境搭建 漏洞复现 四、Apache 4.1 CVE-2021-41773 Apache HTTP Server 路径穿越漏洞 漏洞简介 该漏洞是由于Apache HTTP Server 2.4.49版本存在目录穿越漏洞,在路径穿越目录<Directory/>Require all gra…...

HCIE-学习笔记

动态授权加入的成员优先级高于静态绑定的成员&#xff1b; any组&#xff08;缺省&#xff09;&#xff1a;所有用户或资源&#xff0c;通常用来配置默认规则。any组只能做目的组&#xff0c;不支持配置为源组。 同一个安全组既可以与多条授权规则绑定来表示动态用户&#xff0…...

【计算机网络】性能指标-带宽和时延(MB、GB、KB、B、byte、bit、Mb/s、Gb/s、b/s等)学习

文章目录 1、单位换算MB、b/s1.1 在计算机领域&#xff0c;大写的B、K、M、G表示1.2 在通信领域&#xff0c;小写的k代表的是1000,不是1024&#xff0c;转换的时候要注意区分 2、带宽3、时延&#xff08;时间消耗&#xff09;4、时延带宽积5、往返时延RTT 1、单位换算MB、b/s …...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...