C# 中的 Sql Parser 用于语法检查 Oracle 语句

Posted

技术标签:

【中文标题】C# 中的 Sql Parser 用于语法检查 Oracle 语句【英文标题】:Sql Parser in C# for syntax check Oracle statements 【发布时间】:2010-08-03 10:47:25 【问题描述】:

我想使用 C# 解析文件 .sql 的 SQL 代码。

我想要确定文件 sql 的语法检查,特别是插入、更新和删除语句。

具体来说,是否有任何免费可用的解析器可以解析 C# .NET 中的 SQL 代码?更好的是免费软件,包含源代码,并且易于使用。

我使用甲骨文

【问题讨论】:

您是否希望在将 SQL 传递给 Oracle 执行之前对其进行验证? 我该怎么做?无论如何,我的应用程序的要求是在不执行的情况下验证 SQL。只有我需要 sql 文件和“PARSER”。 【参考方案1】:

你可以试试ANTLR。 在grammar page 上,您会发现一些与Oracle 相关的语法。

不相关,有没有办法只“准备”语句而不执行?这样你就可以让 Oracle 检查语法,然后在你的代码中捕获最终的错误。这将帮助您跳过 Oracle 中已有的复制功能。更不用说处理不同版本的 Oracle 之间的变化的问题了。

编辑: 重新评论代码示例:我曾短暂使用过 ANTLR,我很难在互联网上找到代码示例。我发现的主要来源是examples from ANTLR download page。现在我看到了 ANTLR 的作者 Terence Parr,published new book,并且随附的源代码包含更多 ANTLR examples。

由于您对 ANTLR 没有太多经验,所以我再次建议您尝试另一种方法,因为这是一个相当复杂的领域,需要大量的学习努力才能入门。至少,这是我的经验。

【讨论】:

谢谢,先生。赞达; .NET 中的任何示例应用程序——如果可能的话,带有源代码——使用 AntLR ?? @zendar 语法页面链接已过期。两种可能的替换:antlr3.org/grammar/list.html 或 github.com/antlr/grammars-v4【参考方案2】:

General SQL Parser 可以在不连接数据库的情况下进行离线 SQL 语法检查。它支持 Oracle、SQL Server、DB2、mysql、MS-ACCESS、Teradata 和 PostGreSQL。

但它是一个商业 SQL 库,不是开源的。

【讨论】:

【参考方案3】:

miniSqlParser 可以解析和检查 SQL 语句。这是 C# 和开源的程序集。 SQL Formatter 是使用此程序集的缩进 SQL 的 Web 应用程序。请尝试一下。

【讨论】:

中文,不是英文

以上是关于C# 中的 Sql Parser 用于语法检查 Oracle 语句的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL查询SQL的语法分析(1)——词法分析

腾讯云数据库团队:phpMyAdmin中sql-parser组件的使用

C# & MS Access - SQL 用于在应用程序开始时创建表、列和添加值

java sql解析器比较druid sql parser vs jsqlparser vs fdb-sql-parser

C# 版本的 SQL LIKE

SQL Server参数化SQL语句中的like和in查询的语法(C#)