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

0Ω电阻的工程应用与电流承载能力解析

1. 0Ω电阻的阻值真相作为一名硬件工程师&#xff0c;我经常遇到新手同事对0Ω电阻的阻值产生误解。实际上&#xff0c;0Ω电阻并非理想中的零阻抗&#xff0c;而是存在一定偏差范围的极小阻值电阻。根据EN60115-2国际电阻标准&#xff0c;0Ω电阻的最大允许偏差有三种规格&…...

跨平台OpenClaw部署对比:Phi-3-mini-128k-instruct在Mac/Win/Linux表现

跨平台OpenClaw部署对比&#xff1a;Phi-3-mini-128k-instruct在Mac/Win/Linux表现 1. 测试背景与实验设计 去年夏天&#xff0c;当我第一次尝试在MacBook Pro上部署OpenClaw对接Phi-3-mini模型时&#xff0c;意外发现同样的自动化任务在同事的Windows设备上执行效率差了近40…...

AI赋能智能制造:预测性维护在工业4.0中的落地实践

1. 预测性维护&#xff1a;从被动维修到智能预防的革命 想象一下&#xff0c;你家的空调突然在炎热的夏天罢工了&#xff0c;维修师傅告诉你&#xff1a;"这个零件本来三个月前就该换了"。这种场景在工业生产中放大1000倍&#xff0c;就是传统维护方式带来的痛点。预…...

强化学习(3)--最优状态价值最优策略

说明&#xff1a;本系列文章是我在学习了西湖大学赵世钰老师的《Mathematical Foundations of Reinforcement Learning》一书后的学习笔记&#xff0c;在B站上有赵老师的完整课程视频。 课程视频链接 PDF教材链接 本文代码链接 一、最优状态价值和最优策略 定义&#xff1a…...

Excel文件压缩难?这4个方法让文件秒变小,传输再也不卡壳!

在数据驱动的办公场景中&#xff0c;Excel文件的"臃肿"问题越来越普遍。比如财务部门每月导出的销售报表&#xff0c;因包含近百张动态图表和历史数据&#xff0c;文件大小可能达到几十MB&#xff1b;市场调研团队收集的问卷数据&#xff0c;若未做图片压缩&#xff…...

AI Agent 赋能智能客服:Vue3 + LangChain + 千问落地实战

前言 &#x1f44b; 本文适合有前端基础的开发者阅读。我会从整体架构出发&#xff0c;详解如何用Vue3 TypeScript做前端交互、**Python3 LangChain 千问&#xff08;Qwen&#xff09;**做后端推理&#xff0c;构建一个真正能落地的智能客服 Agent。代码干货较多&#xff0…...

DDR5 SDRAM中的DQS间隔振荡器:原理、应用与误差分析

1. DDR5 SDRAM中的DQS间隔振荡器是什么&#xff1f; 如果你拆开过电脑内存条&#xff0c;可能会注意到那些排列整齐的黑色芯片——这就是SDRAM。而DDR5作为最新一代的内存标准&#xff0c;在速度和能效上都比前代有了显著提升。但今天我们要聊的不是这些宏观特性&#xff0c;而…...

Matlab串口通信上位机开发:从零搭建实时数据采集系统(附完整代码)

Matlab串口通信上位机开发实战&#xff1a;从零构建工业级数据采集系统 在工业自动化、物联网设备调试和科研实验数据采集领域&#xff0c;串口通信作为最基础也最可靠的数据传输方式&#xff0c;至今仍发挥着不可替代的作用。Matlab凭借其强大的数值计算能力和丰富的可视化工具…...

我的前半生

大家好&#xff0c;我是李文涛。2026年&#xff0c;我步入了人生的不惑之年。回望来时路&#xff0c;快四十载光阴如白驹过隙。今天想和大家分享一下我的前半生——一个从秦岭深处走出的小镇青年&#xff0c;是如何一步步走到今天的。1、 在最美的地方&#xff0c;度过最纯真的…...

3个颠覆性功能,让《空洞骑士》模组管理效率翻倍

3个颠覆性功能&#xff0c;让《空洞骑士》模组管理效率翻倍 【免费下载链接】Lumafly A cross platform mod manager for Hollow Knight written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/lu/Lumafly 你是否曾因模组依赖冲突而游戏崩溃&#xff1f;是否…...