区分 .sql 文件是 PL/SQL 还是 TSQL

Posted

技术标签:

【中文标题】区分 .sql 文件是 PL/SQL 还是 TSQL【英文标题】:Differentiate .sql file whether it is PL/SQL or TSQL 【发布时间】:2015-10-20 12:46:49 【问题描述】:

我有一个 (.sql) 文件列表,其中一些文件是 Oracle PL/SQL,而另一些是 Microsoft TSQL 文件。如何使用 C#.net 区分给定的 .sql 文件是 PL/SQL 还是 TSQL。我们如何识别它。

我需要一些示例 C# 代码来更好地识别文件类型。

是否有任何工具可用于识别?请指导我。

问候, 西瓦普拉卡什。

【问题讨论】:

一个简单的select 语句在两种语言中是相同的,那么您想如何区分它们呢?我最好的方法是检查文件中是否存在某些特定的 PL/SQL 词,如果是这种情况,则该文件是 PL/SQL 文件,否则是 TSQL 文件。 但是首先将它们放在不同的文件夹中不是一个好主意吗? 我需要创建一个解析器工具,它应该接受所有 .sql 文件,我需要区分它是否需要使用解析器类型。 以及如何区分SELECT * FROM TABLE 我正在使用 Microsoft.Data.Schema.ScriptDom.Sql。 (TSql100Parser) 类来解析 .sql 文件。在这种情况下,解析不会抛出任何错误。 【参考方案1】:

根据您的 SQL Server 版本,您可以使用 Microsoft.Data.Schema.ScriptDom.Sql.TSqlParser 类的派生类来尝试解析 SQL。然后您可以检查它产生的错误(如果有)以确定它是否是 TSQL。

https://msdn.microsoft.com/en-us/library/microsoft.data.schema.scriptdom.sql.tsqlparser(v=vs.100).aspx

这个答案可能有助于解析 PL/SQL

Parser for Oracle SQL

【讨论】:

我正在使用 Microsoft.Data.Schema.ScriptDom.Sql。 (TSql100Parser) 类来解析 TSQL 文件。如果 .sql 文件大小增加,则解析需要更多时间。例如,2 MB 文件的解析时间超过 8 分钟。这不是最佳做法。帮帮我。 您可能想更新您的问题。 hack 可能是检查是否存在特定于 TSQL 的 GO 关键字 感谢您的回复。我会检查这个。

以上是关于区分 .sql 文件是 PL/SQL 还是 TSQL的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL Developer从11.0.6版本开始32/64为之区分

从 PL/SQL 开发人员处读取 XML 文件

JDBC + PL/SQL = 这么简单,还是有啥陷阱?

使用 PL/SQL 列出指定目录中的文件

pl/sql粘贴进去的汉字全是问号

PL/sql导入sql文件中文乱码解决办法