【python】使用Antlr4实现识别sql中的表或视图名

news2024/11/13 10:10:46

前言

先上成果预览图吧
image.png

作为一个数据库sql开发者,肯定有很多人和我一样,想要有一个工具,能传入任意sql,解析出sql中的所有表。
我之前有一篇文章【AIO】将任意查询sql转换成带远程数据库DBLINK的sql 中就提到了,使用纯文本硬解析会存在很多不确定因素,比如oracle新版本就添加了新的sql语法,有些场景太难处理,而解析器则只需要配置好规则,并且标准化规则的语法,那么扩展性就很强了。

antlr4 https://github.com/antlr/antlr4

Antlr这个老早就有了,如今已经比较成熟,像代码高亮插件prism就是用的这个。
但是,我找了好久,竟然在网上没找到一份有关“识别sql中的表名”的现成完整代码或者程序!解析其他语言的倒是有,但最后解析出来一个树就啥也不提了。
另外也找了很多问答,都是说Antlr4再加grammars-v4就可以解析sql了,但是就是不给代码。
无奈之下,我只能抱着github啃作者的文档,这

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/709132.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

截取屏幕中指定区域的图像pyautogui.screenshot(区域)

【小白从小学Python、C、Java】 【等级考试500强双证书考研】 【Python-数据分析】 截取屏幕中指定区域的图像 pyautogui.screenshot(区域) [太阳]选择题 关于以下代码说法错误的是: import pyautogui print("【执行】pyautogui.screenshot(region(0,0,2…

麦语言入门~001课

麦语言是一种编程语言,它是由麦肯锡公司开发的一种专门用于数据分析和统计建模的语言。麦语言具有类似于R和Python的功能,并提供了一组丰富的数据处理、统计分析和机器学习的工具。麦语言主要用于解决复杂的商业和统计分析问题,并被广泛应用于…

CRM系统能帮助外贸企业提高哪些工作效率?

外贸企业的业务和客户遍布世界各地,更涉及不同的语言和文化。因此,管理客户信息、提高服务质量、扩大市场份额成为了外贸企业亟待解决的问题。针对这些情况,不少企业开始使用CRM客户管理系统。下面说说,外贸企业为什么要用CRM系统…

Spring面试题--Spring的bean的生命周期

这个问题比较困难,设计到了spring的底层,但是通过这个的学习,可以帮助我们了解Spring容器是如何管理和创建bean实例,以及方便调试和解决问题。 BeanDefinition bean的定义信息,Spring容器在进行实例化时,…

11-C++算法01-枚举排序

📖 C算法 在编程中,算法是解决问题的一系列步骤或规则。在C中,提供了丰富的算法库,可以方便地进行各种常见的算法操作。本篇学习笔记将介绍一些常见的排序算法,帮助你理解和应用这些算法。 🚀 枚举 &…

C语言VS Code 开发环境搭建

文章目录 官方文档安装拓展生成c_cpp_properties.json生成tasks.json生成launch.json测试Debug如何让程序debug完不退出?Windows版本的配置GDB和LLDB的区别 由于之前使用VS Code较少,缺少在VS Code上开发C程序的经验。本篇博文主要记录使用VS Code开发C程…

基于Tars高并发IM系统的设计与实现-基础篇2

基于Tars高并发IM系统的设计与实现-基础篇2 三大指标 高可用 分为服务高可用与存储高可用。 服务高可用 服务高可用要做到高可用必须具备两个特点: 负载均衡可横行扩展 当服务的请求量比较高的时候,一台服务不能满足需求,这时候需要多…

sklearn.preprocessing模块介绍

数据预处理 Binarizer: 二值化 用于将数值特征二值化。它将特征值与给定的阈值进行比较,并将特征值转换为布尔值(0 或 1),取决于特征值是否超过阈值 Binarizer(*, threshold0.0, copyTrue)参数: threshold&#xf…

AGI—从GPT和大型语言模型中汲取的经验教训

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID|计算机视觉研究院 学习群|扫码在主页获取加入方式 论文地址:https://arxiv.org/pdf/2306.08641.pdf 计算机视觉研究院专栏 Column of Computer Vision Institute 人工智能…

【计算机视觉 | 图像分类】arxiv 计算机视觉关于图像分类的学术速递(6月 29 日论文合集)

文章目录 一、分类|识别相关(12篇)1.1 Pseudo-Bag Mixup Augmentation for Multiple Instance Learning Based Whole Slide Image Classification1.2 Improving Primate Sounds Classification using Binary Presorting for Deep Learning1.3 Challenges of Zero-Shot Recognit…

万物分割SAM家族 越发壮大!HQ-SAM、FastSAM 和 FasterSAM(MobileSAM)

卧剿,6万字!30个方向130篇!CVPR 2023 最全 AIGC 论文!一口气读完。 1、(更高质量)Segment Anything in High Quality 最近的 Segment Anything Model (SAM) 代表了分割模型的一大飞跃,有强大的零…

从零实现深度学习框架——Seq2Seq机器翻译实战

引言 本着“凡我不能创造的,我就不能理解”的思想,本系列文章会基于纯Python以及NumPy从零创建自己的深度学习框架,该框架类似PyTorch能实现自动求导。 💡系列文章完整目录: 👉点此👈 要深入理解…

【你哥电力电子】 THE BUCK-BOOST 升降压斩波电路2

BUCK-BOOST电路2 2023年1月30日 nige in Tongji University #elecEngeneer 上链 文章目录 BUCK-BOOST电路26. CCM非理想能量守恒平均分析6.1 CCM非理想大信号平均模型6.2 CCM等效大信号平均模型6.3 CCM的DC电路模型6.4 CCM的小信号线性电路模型6.5 CCM非理想小信号传递函数6.…

【SaaS】多租户系统设计

文章目录 多租户系统设计一、SaaS 的系统分级二、应用程序必须支持多租户三、数据隔离方案3.1、独立应用独立库3.2、同一个应用程序,每个租户一个库3.3、同一个应用程序,同一个数据库3.4、分片多租户 四、我们的模型选择4.1、开发实践4.2、元数据/配置驱…

vue路由传参+案例(使用mock模拟后端数据)

路由传参 跳转路由时,可以给路由对应的组件内传参 声明式导航 /path?参数名值 /path/值 —需要路由对象提前配置 path: ‘/path/:参数名’ 对应的页面组件接收传递过来的值 $route.query.参数名 $route.params.参数名 router/index.js import Vue from vue // 1. …

解析matlab的audioread()输入输出参数

目录 一、API简介 二、实验 1. matlab 2. C语言 一、API简介 链接如下: 读取音频文件 - MATLAB audioread- MathWorks 中国 也可以浏览最新的英文版API说明: 简单说明如下: 1. 读取wav格式的文件,会自动跳过44个字节的文件…

初识React/JSX/组件/state/受控组件

JSX 推荐使用小括号包裹jsx 使用函数创建组件 使用类创建组件 抽离组件 事件绑定 事件对象 有状态和无状态组件/state 抽离事件处理程序 表单元素 受控组件 多表单优化 非受控组件(了解即可)

vhost-net-原理-初始化流程-数据传输流程-vhost-net后端

文章目录 1.vhost net2.vhost-net的初始化流程vhost net设置vhost dev设置vhost vring设置 3.数据收发流程分析3.1 数据发送3.2 数据接收 4ioventfd和irqfd的通知机制4.1ioeventfdqemu侧kvm侧总体效果 4.2irqfdqemu侧kvm侧总体效果 参考: 1.vhost net 传统的virtio…

ChatGPT Plugins内幕、源码及案例实战(一)

ChatGPT Plugins内幕、源码及案例实战 6.1 ChatGPT Plugins的工作原理 本节主要跟大家谈ChatGPT的插件(Plugins),这个内容非常重要。现在很多企业级的开发,一般都会基于ChatGPT 插件进行一些服务的封装,相当于开发了一个代理(Agent),把一些服务或者API封装在里面,然后…

eclipse编辑器汉化;eclipse安装中文插件

eclipse IDE默认是英文环境,使用起来略微不便,汉化还是很有必要的;下面记录一下安装中文插件的过程: 文章目录 一、 选择安装包地址二、 在eclipse安装中文插件2.1 在线安装2.2 手动下载安装包2.3 导入到eclipse 三、汉化插件介绍 一、 选择安…