问题标签 [sql-parser]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 用于更改表名的 SQL 解析器
我有一个 SQL 查询:
和一张地图:
我只想使用此映射将上述查询转换为:
哪种开源 SQL 解析器适合此目的。
java - Java 的 SQL 查询解析器
我正在寻找用于 MySQL 查询的 SQL 查询解析器。使用它我可以解析查询、修改查询对象并打印回修改后的查询
JSQL Parser 正是我所需要的,但它有 2 个主要问题,同时在列值中转义单引号 https://github.com/JSQLParser/JSqlParser/issues/167 https://github.com/JSQLParser/JSqlParser/issues/166
所以我正在寻找可以帮助我完成任务的开源替代品
我试过的 Presto-parser 无法解析更新查询
如果其他人知道任何其他可靠的 SQL 解析库,请告诉我
java - Windows Server 2008 R2 上的 java 类加载缓慢
对于 SQL 解析,我们在 Java Web 应用程序中使用通用 SQL 解析器(GSP)。如果我们在带有 Java 7 的 Windows Server 2008 R2 上使用 GSP 部署我们的应用程序,我们会在类加载期间看到 100% 的 CPU 峰值,这可能会持续几分钟。在初始类加载后一切正常,直到我们关闭应用程序服务器并且类被卸载:100% CPU 峰值又回来了。如果我们将相同的代码库部署到 Windows Server 2012、Windows 7 Enterprise、OS X 或 Linux 服务器,则不会出现这样的峰值。在 Windows Server 2008 R2 上使用 Java 8 可以稍微改善启动。
使用 Microsoft 的 Process Monitor,我们看到从这个 jar 加载类时浪费了很多时间。gsp.jar 中的类文件被混淆了。我们可以排除除了新添加的 jar 之外的任何其他原因。只需解析一条 SQL 语句,冷启动时间就会显着增加。禁用防病毒软件没有任何效果。并非所有客户都可以选择升级到较新的 Windows Server 版本。
我们正在运行这个 GSP 版本:
这个测试程序在 Windows Server 2008 R2 上执行需要 40 多秒,在 OS X 上需要 1.5 秒。
有谁知道是什么导致了这个问题以及如何避免它?
编辑 我采用了全新的 Windows Server 2008 R2 并使用不同的 RAM/JVM 设置运行测试程序:
例如:java -Xmx1G -classpath ".\;.\gsp.jar" com.stackoverflow.TestGSP
如果我在 OS XI 上运行相同的测试,得到这个持续时间:
更改 JVM 版本会有所帮助,但增加 RAM 并不能解决问题。
postgresql - PostgreSQL 转换过程代码
我需要解析 SQL 查询并形成关系代数树。目前我使用 postgres 内部解析器来解析查询。(更具体地说,我在下面的链接中有步骤 1 的结果)。
http://www.postgresql.org/docs/current/static/parser-stage.html
我正在寻找的是源代码或第二部分的实现,转换过程。我搜索了一下,但找不到它。
还有其他从 sql 查询中形成关系代数树的建议吗?
谢谢
perl - 解析 SQL 以确定复杂程度
我必须通过计算构成 sql 的特定关键字、子查询、派生表、函数等的出现次数来确定 sql 的复杂程度(简单/中等/复杂等)。此外,我必须在语法上验证 sql。
我在网上搜索,发现 Perl 有 2 个已命名的类SQL::Statement
,SQL::Parser
可以利用它们来实现相同的目的。但是,我发现这些类有几个限制(例如CASE WHEN
不支持的构造等)。
话虽如此,用 Lex/Yacc 或 Flex/Bison 构建自定义简洁的 sql 解析器会更好吗?哪种方法会更好更快?
请分享您对此的看法。另外,任何人都可以将我指向任何讨论相同内容的在线资源。
谢谢
java - Can we execute SQL without having a real database connection in java?
Can we execute SQL without having a real database connection in java? example:
I will replace :param in runtime in java code. Is there any way to do this?
I found this link: How do I extract selected columns given an Oracle SQL String?
but no quick solution is provided in this link
Currently thinking of: dummy hsqldb connection and execute SQL query. But it requires to span a new in memory db.
Is there any better & quick solution?
python - 在文本中查找以下模式
从广义上讲,我需要解析 SQL 过程并找到所proc
依赖的表和列。为此,我正在尝试搜索regex
.
例子:
它应该返回
如何使用grep
orawk
或 python 脚本等来做到这一点?
sql - 可视化 sql 语句正在使用什么
我有一个 SQL 语句,它使用通过另一组语句构建的几个表,这些语句又由更多语句集等构建,大约 8 度扇形到大约 25 个表(它在 4 度变得更宽,但是那个级别最终开始指向相同的几个常见来源)。
我正在为 Graphviz 制作一个点文件,该文件显示每个语句的选定列,以及每个来自哪个表。由于涉及案例陈述和功能,有时每列有多个来源。一旦达到了几个级别,它不仅有点混乱,而且很难正确读取或写入。
我一直在尝试寻找是否有一种工具可以分析 SQL 选择语句和(而不是制作执行计划图)图表,哪些输入去哪些输出。最好该工具能够将其与多层语句相结合。
有谁知道这样的工具?
您会看到,在 Google 上搜索“graph an sql statement”之类的东西,最终会得到很多关于如何使用 SQL 查询中的数据或特定于图形数据库的数据制作图表和图形的结果。既不存在也不存在,将“图形”更改为“可视化”也无济于事。
例如
可能希望引导一个工具来制定类似的东西:
通过基本解析上述 SQL 并(一个选项)为 Graphviz 生成一个 DOT 文件,如下所示:
如果它可以使用花哨的记录类型节点标签来绘制表格会更好。
而且,由于 Graphviz 可以生成 SVG,但 StackOverflow 似乎无法以我能看到的任何方式嵌入它,运行这个 SVG 片段来查看它的样子(如果上面嵌入的 imgur 不起作用)。
python - Python解析SQL并查找关系
我有大量的 SQL 查询列表,全部都是字符串,它们是为Presto编写的,所以有点为 MySQL 格式化。
我希望能够梳理出一些查询中编写的表关系。
让我们从简单的事情开始:
可以清楚地看到事物连接在一起的位置,尽管有别名 - 所以也需要扫描并找到别名 - 这很好,因为使用了关键字“AS”。
所以我想为查询返回一个关系列表,每个关系看起来像这个字典:
我可以想象这样做很容易,但事情变得更加复杂:
3个注意事项
- 缺少“AS”保留字 - 可能会使其更难获得
- 加入时,需要一起解析两个表
- 这不是一个简单的“JOIN”它是一个左连接
我想知道是否有某种形式的 Python SQL Parsing 库可以让我梳理出大约 4000 个查询中的关系?如果没有,那我怎么能有效地做到这一点?我猜我可能需要扫描查询,找到连接,找到别名,然后看看它们是如何连接的,同时考虑到一堆需要丢弃的停用词。
vba - VBA:将解析的结构转换为 PostgreSQL
我正在寻找将解析的结构转换为 PostgreSQL。希望我问的正确。
是否已经有代码可以做到这一点?
对于更多颜色,需要来自这个问题/答案: https ://dba.stackexchange.com/questions/162784/postgresql-translating-user-defined-calculations-into-executable-calculation-in
请注意问题的这一部分:“使用现成的解决方案,可以将解析的结构转换为 SQL。大多数语言都有可以做到这一点的东西,比如 SQL::Abstract。如果没有,你必须创建它。”
编辑:如果重要的话,我们使用的是 PostgreSQL 9.3.5。