问题标签 [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.
java - 如何使用 Java 对 SQL 查询的评估顺序进行编码?
我正在尝试使用 JSQLParser 开发一个 SQL 查询评估器,我真的很困惑如何决定评估顺序,比如如果我有以下形式的查询
问题是如何从中构建解析树或表达式树。我需要一些指针来解决这个问题。另外补充一点,我正在考虑使用几个堆栈来解决这个问题,即一个运算符堆栈和一个操作数堆栈。我需要确认这是否是理解这个问题的一种可能方式?
sql - 如何将android sqlite查询解析为java
我有很多作为输入的 android sqlite 查询。我必须将它们解析为 java,从向量中搜索并返回结果。我该如何处理?
有没有像 JSqlParser、SQL 解析器、JoSQL for android sqlite 这样的插件?
sql - 获取使用 SELECT 查询选择的表名和列
我有一个要求,我有以下形式的查询:
我想从中得到三件事:
如果可能的话,我也想获取所选列的数据类型。
我知道这可以手动完成,但我有超过 2000 个选择查询,每个查询都获取超过 100 个字段。因此,这项工作变得无聊且耗时。
关于如何实现自动化的任何想法。我有 oracle SQL 开发人员,如果它适合我的工作,我什至可以编写 UNIX shell 脚本。
java - JSqlParser 如何拆分表达式
假设我有一个格式的表达式
我想得到一个表达式列表如下
如果我使用表达式访问者模式,对于 AndExpression 访问者,我写了类似
但是,这会递归地运行并进入其他每个访问者模式方法。获得较小的表达式时如何停止?
如果我只使用 getLeftExpressions() 和 getRightExpression(),我在第一次运行中得到的是左边的“a>10”和右边的“b>20 和 c>30”。
php - 按 ; 分割字符串
我已经检查了很多,但我无法掌握它。
我需要将 sql 转储拆分为查询。
我需要的基本上是这样的字符串:
我需要做的是分别获取每个查询。问题是,如果我用它来分割文件,;
它也会分割包含 的字符串;
,而不仅仅是那些以 . 结尾的字符串;
。
喜欢这部分:a:1:{s:15:\"ActivityUserIDs\";a:2:{i:0;s:1:\"2\";i:1;s:1:\"1\";}}
。我不希望这被拆分。
我都尝试过preg_match()
和preg_split()
,但我无法得到想要的结果。
我尝试将此作为一种模式:/[\;]+/
以及围绕它的多种其他模式,但我无法让它发挥作用。
我也尝试更换;在它周围没有''的地方用**然后爆炸它,但仍然没有结果。
谢谢。
sql - 如何在 Node.js 中解析/标记 SQL 语句
我正在寻找一种在 Node.js 应用程序中解析/标记 SQL 语句的方法,以便:
- 标记ISO/IEC 9075标准或此处定义的所有“基本”SQL 关键字。
- 验证 SQL 语法。
- 找出查询将要做什么(例如读取或写入?)。
您有什么解决方案或建议窥视吗?
链接:任何 Javascript/Jquery 库来验证 SQL 语句?
我已经进行了研究,并找到了一些方法:
使用现有的 node.js 库
我进行了Google 搜索,但没有找到一个可以使用的自愿且受欢迎的库。我找到了那些:
- simple-sql-parser ( github上 22 颗星, npm上每天下载 16颗星)
- 仅支持 SELECT、INSERT、UPDATE 和 DELETE
- 路上有v2分支
- sql-parser ( github 90 星, npm每日 6 次下载)
- 仅支持基本的 SELECT 语句
- 基于jison
- sqljs ( github 17 星, npm每日 5 次下载)
- v0.0.0-3,正在开发中...根本没有文档:)
不幸的是,这些库中没有一个是完整且值得信赖的。
基于 node.js 低级标记器库自己做
我可以使用低级标记器库自行完成,例如:
基于现有的Javascript代码美化器自己做
CodeMirror是一个非常酷的 Javascript 库(浏览器端),可以识别 SQL 关键字、字符串等。查看演示。
我可以基于 CodeMirror 构建一个 node.js 库标记器。SQL 模式在github 上,我可以调整它以在节点应用程序中获取令牌。
PS:CodeMirror在github上有 5046 颗星,并且维护得很好。
我发现有两个不同的问题:标记化和语法验证(与标记化有关)。
我根据优秀CodeMirror的SQL 模式为自己做了一个Node.js 的SQL 分词器(github 上 5,046 颗星,维护良好)。CodeMirror 的 SQL 模式负责“通用” SQL 和一些 SQL 特殊性,如MSSQL、MySQL、PL/SQL、Cassandra、 Hive 和MariaDB。
当我的项目足够成熟时,我(可能)会在 GitHub 上公开并让你知道。
关于SQL 语法验证,我还没有找到 JavaScript 工具(或开源项目以适应 JS)...
sql - 使用基于 ANTLR 的 PLSQL 解析器解析 FOR 循环
我已经修改了 [Porcelli] ( https://github.com/porcelli/plsql-parser ) 给出的 PLSQL 解析器。我正在使用这个解析器来解析 PlSql 文件。我在解析 FOR 循环语句时遇到问题,例如
上面的语句没有解析并且它抛出 EarlyExitException。
现在,如果我修改此语句并在 1 和双点 (..) 之间放置一个空格,它将解析该语句。我不确定如何处理第一种情况。
解析器语法:
// $>
词法分析器语法:
python - 在 python/C++ 中激发类似 SQL 的查询工具
实现类似 SQL 的查询工具,其中必须按给定顺序从 STDIN 读取以下内容:-
我们必须在 STDOUT 上打印每个查询的输出。
例如:-
输入:
4,2
输出:
你们能告诉我应该如何解决这个问题吗?我应该使用什么数据结构来存储表和处理查询?
PS:我不是要求现成的解决方案,我只需要逐步帮助解决这个问题。
python-3.x - 用python解析SQL以查找特定语句
我正在使用 sqlparse 来尝试查找特定语句。
代码:
我明白了
但我真正想要的是返回表名:
我怎样才能做到这一点?我的最终目标是解析 sql 脚本文件夹并查找参考资料和其他详细信息。
c# - 如何安装 Microsoft.SqlServer.Management.SqlParser?
当我在新机器上重建它时,我的 c# 安装程序项目出现了大量警告。警告是他们正在寻找仅存在版本 10.0.0.0 的 dll 的 11.0.0.0 版本。我发现这是由于安装了 SQL Server 的版本(SQL Server 2008 R2)。大多数 dll 是由于共享管理对象包的版本不是 11.0.0.0 版本。
所以我安装了共享管理对象所需的 SqlSysClrTypes.msi (x86)。然后我安装了 ShareManagementObjects.msi (x86)。我从这里得到它们。
一些错误已经消失,但现在我得到了 2 个似乎引用了应该从 SharedManagementObjects.msi 安装的同一个 dll。它必须是可以获取/安装的,因为我目前的版本是 10.0.0.0。
错误是:
找不到程序集“Microsoft.SqlServer.Smo.dll”的依赖项“MICROSOFT.SQLSERVER.MANAGEMENT.SQLPARSER”(签名=“89845DCD8080CC91”版本=“11.0.0.0”)
和:
找不到程序集“Microsoft.SqlServer.Management.SmoMetadataProvider.dll”的依赖项“MICROSOFT.SQLSERVER.MANAGEMENT.SQLPARSER”(签名=“89845DCD8080CC91”版本=“11.0.0.0”)
我读过的所有内容都表明 Microsoft.sqlserver.management.sqlparser 应该作为 SharedManagementObjects.msi 的一部分安装。我可以做些什么来获取这个 dll 吗?我还需要安装其他东西,例如 Native Client 吗?