区分 .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的主要内容,如果未能解决你的问题,请参考以下文章