问题标签 [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.

0 投票
1 回答
310 浏览

sql-server - SQL Server 的 ow "batchparser.dll" - 如何使用它?

是否有记录或至少模糊记录的方式来利用batchparser.dll隐藏在 SQL Server 目录结构 ( ) 深处的 SQL Server C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn

是否有可能提交 T-SQL 批处理并对其进行语法错误解析?

0 投票
2 回答
292 浏览

java - 在搜索场景中使用 Java 的 SQL 解析器

任何人都可以建议一些可以将 SQL 解析器用于 java 的良好实现示例或使用场景。

我有一个应用程序,我们需要根据某些参数、排序标准等过滤要在 UI 上显示的数据。对此我有一些疑问:

1)这可以是一个理想的解决方案吗?

2)UI如何发挥作用,为Java层提供查询?

0 投票
1 回答
3528 浏览

python - 将 SQL 查询解析为类似 DOM 的树以启用自动排列?

我有一个大而复杂的 sql 视图,我正在尝试调试。视图中未显示一条记录,我需要确定是哪个子句或连接导致该记录现在显示。目前我正在以非常手动的方式执行此操作,一次删除一个子句并运行查询以查看是否显示了所需的行。

我认为如果我能够以编程方式执行此操作会很棒,因为我最终会每两周一次深入研究这样的查询。


有谁知道是否有办法将 SQL 查询解析为对象树(例如 中的对象sqlalchemy.sql.expression),以便我能够排列树并执行结果?

0 投票
1 回答
2362 浏览

java - 在 jsqlparser 中向 sql 查询添加语句

我想知道是否可以使用 jsqlparser 向 sql 查询添加表达式。例如,我想在 sql 语句中添加一个列和一个值:

原始查询:“INSERT INTO frontend( in_reply_to) VALUES ( email);”

修改后的查询:“INSERT INTO frontend( in_reply_to, user_id) VALUES ( email, 123)”

我设法修改了一个列名,但没有添加一个。

这是我拥有的代码:

0 投票
1 回答
101 浏览

sql - 更好地解析名称值或组合

我有两个不同的表,名称值以不同的方式存储......

例如一个字段是:

发明人姓名

约翰·C·史密斯

而在另一个表中的字段是:

发明家优先 | InventorLast

约翰 C. | 史密斯

问题是对我来说将单独的名字组合起来比花天知道解析单独的名字需要多长时间更有意义。我了解查询时的缺点:

姓氏为 Thomas 的查找和发明者可以在字段中包含 thomas 的名字,除此之外,查询主要使用 like 和name ,我不喜欢,因为我希望它尽可能准确。

我对此很陌生,我读过的所有名称解析文章都让它看起来像是一场噩梦,并且可以使用一些诚实的意见。

0 投票
2 回答
1492 浏览

antlr - ANTLR 制定语法分析插入/更新/删除 SQL 查询

我是ANTLR语法写作的新手。我的要求是解析插入/更新/删除SQL查询以获取详细信息,例如正在更新/插入/删除行的表、列列表及其值等。是的,有一个很好的文档ANTLR,但如果有人可以帮助我用于查询解析的特定语法将有很大帮助。

0 投票
1 回答
10110 浏览

python - Python 的 SQL 解析库

我们需要一个用于 Python 的 SQL 解析或分解库。我们希望能够输入 SQL 文本查询,然后将查询部分作为结果返回。它不需要花哨或任何东西,但我们希望避免自己进行解析。理想情况下,我们可以这样做:

这也是:

任何人都可以给我们任何指示吗?如果功能更有限,那也没关系。

非常感谢!

0 投票
2 回答
3701 浏览

c# - 正则表达式从 .sql 文件 C# 中的 DDL 解析存储过程和对象名称

我有一个 .sql 文件,其中可能包含几个存储过程的 DDL 定义、表、触发器、视图等的更改语句

它可能有这样的陈述:

  • 创建过程/创建过程
  • 改变程序/改变程序
  • 丢弃过程/丢弃过程
  • 创建表/触发器/视图
  • 更改表/触发器/视图
  • 拖放表/触发器/视图
  • ETC

解析 .sql 文件并获取对象列表(Proc/Table/View 名称)以及对它们执行的操作(ALTER/CREATE/DROP)的最佳方法是什么?我想代替使用 Microsoft.Data.Schema.ScriptDom 或 ANTLR 或其他解析器之类的东西,最简单的方法是使用 RegEx。但不确定我应该写什么样的正则表达式来涵盖所有场景。

到目前为止,这个表达式能够匹配上述所有规则。但是我如何获得它前面的对象的名称。例如。它匹配

(create|alter|drop)\s+(procedure|proc|table|trigger|view|function|constraint)

如何获得 AdvisorGroups 的名称是我的问题。我的 RegEx 也不完美,因为它可能有 [dbo]。在它面前与否。它也可能只是 Alter table AdvisorGroups。我并不是要照顾所有的可能性。只是最低限度。

ALTER TABLE [dbo].[AdvisorGroups] 添加约束 [XXX]

-提前致谢

0 投票
1 回答
2029 浏览

c# - 用于检测 DDL(创建、更改、删​​除).sql 脚本中隐藏的 DML(插入、更新、删除)语句的正则表达式

更新:为了让这个问题更容易。我已经更改了字符串,现在您根本不必担心 BEGIN END。相反,我现在只有 GO 语句作为终止符。我希望我现在能从其他人那里得到一些答案

我需要编写一个正则表达式,它可以检测隐藏的 DML 语句,如 DDL 脚本(CREATE、ALTER、DROP)中的 INSERT、UPDATE、DELETE。

例子。在下面的脚本中,它应该捕获 2 个delete table5语句和最后一个insert into table3语句。但它应该忽略实际上在存储过程本身的主体中的插入语句。

如果你在这里运行这个 RegEx:http ://regexr.com?33rf3 ,你会看到我已经完成了 90%。唯一不起作用的部分是它正在进行贪婪匹配,直到最后一个 GO。我需要它在第一次 GO 时停止。我试过使用 +? 操作员使其不贪婪,但它不想工作。

0 投票
1 回答
1379 浏览

c# - Microsoft.Data.Schema.ScriptDom 解析器的速度

我正在使用 Microsoft.Data.Schema.ScriptDom 和 Microsoft.Data.Schema.ScriptDom.Sql 库来解析 SQL 并将“TOP #”添加到 SQL 选择语句中。我们这样做是为了在某些情况下限制结果集。

我刚开始使用这个库,我注意到解析 SQL 并不是很快。我没有检测代码来实际测量速度,但它很明显,在半秒到一整秒之间。这并不可怕,但我也不会称之为快速。

我的代码如下所示:

我用谷歌搜索了这个并没有发现任何关于速度的抱怨,所以我想知道我是否做错了什么。